summaryrefslogtreecommitdiff
path: root/Build/source
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2015-09-03 06:54:44 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2015-09-03 06:54:44 +0000
commitb68fdf390576139fff64c47bbeada70465f0b9c0 (patch)
tree9bf81f6d7cc901d45cf1ec694da05a8a8501f8a5 /Build/source
parenta566129f4c9eb331f64cb35747f858517a9a9571 (diff)
Integrating gregorio-4.0.0-beta2
git-svn-id: svn://tug.org/texlive/trunk@38285 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
-rw-r--r--Build/source/Makefile.in1
-rwxr-xr-xBuild/source/configure24
-rw-r--r--Build/source/doc/Makefile.in1
-rw-r--r--Build/source/libs/Makefile.in1
-rwxr-xr-xBuild/source/libs/configure24
-rw-r--r--Build/source/m4/ChangeLog4
-rw-r--r--Build/source/m4/kpse-pkgs.m41
-rw-r--r--Build/source/texk/Makefile.in1
-rw-r--r--Build/source/texk/README3
-rwxr-xr-xBuild/source/texk/configure33
-rw-r--r--Build/source/texk/gregorio/ChangeLog11
-rw-r--r--Build/source/texk/gregorio/Makefile.am60
-rw-r--r--Build/source/texk/gregorio/Makefile.in1401
-rw-r--r--Build/source/texk/gregorio/ac/withenable.ac7
-rw-r--r--Build/source/texk/gregorio/aclocal.m41196
-rw-r--r--Build/source/texk/gregorio/config_.h.in191
-rwxr-xr-xBuild/source/texk/gregorio/configure17554
-rw-r--r--Build/source/texk/gregorio/configure.ac40
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/ChangeLog21
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/TL-Changes16
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/patch-10-const38
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/.gregorio-version4
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/CHANGELOG.md331
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTING.md92
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTORS.md46
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/COPYING.md698
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/Makefile.am30
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/README.md37
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/UPGRADE.md175
-rwxr-xr-xBuild/source/texk/gregorio/gregorio-4.0.0-beta2/VersionManager.py308
-rwxr-xr-xBuild/source/texk/gregorio/gregorio-4.0.0-beta2/build.sh145
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/configure.ac92
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/900_gregorio.xml95
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/Makefile.am18
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/README.md60
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/.DS_Storebin0 -> 6148 bytes
-rwxr-xr-xBuild/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/LuaLaTeX+se.engine4
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/gregorio.scpt27
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc-syntax.plist82
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.lang96
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.vim32
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.xml40
-rwxr-xr-xBuild/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gprocess209
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio-scribus.lua95
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio.pngbin0 -> 916 bytes
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Appendix_Font_Tables.tex82
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_User.tex1274
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_gregorio.tex854
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_internal.tex1587
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Gabc.tex207
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef-4_0_0-beta2.pdfbin0 -> 274464 bytes
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef.tex1249
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef-4_0_0-beta2.pdfbin0 -> 479456 bytes
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.lua296
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.tex188
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Makefile.am58
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/factus.gabc17
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/veni.gabc21
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/FactusEst.gabc25
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/Makefile.am18
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/PopulusSion.gabc26
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/main-lualatex.tex46
-rwxr-xr-xBuild/source/texk/gregorio/gregorio-4.0.0-beta2/install-gtex.sh155
-rwxr-xr-xBuild/source/texk/gregorio/gregorio-4.0.0-beta2/install.sh43
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_compile_flag.m475
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_link_flag.m475
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/pkg.m4287
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/Makefile.am146
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/bool.h31
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.c1242
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.h82
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config.h33
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config_.h.in86
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/dump/dump.c931
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/encode_utf8strings.c75
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-elements-determination.c281
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-glyphs-determination.c991
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination-l.c9577
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination.l699
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.c2772
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.h330
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.c3205
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.h221
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.h34
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.l416
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.y1203
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-write.c875
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc.h84
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregorio-utils.c638
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-position.c1243
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-write.c3265
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex.h162
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.c173
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.h56
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/plugins.h34
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.c373
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.h85
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.c1707
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.h867
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.c44
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.h28
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.c198
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.h67
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h33
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h.in33
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.c1916
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.h325
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.c1606
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.h86
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.h25
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.l91
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.y150
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.c456
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.h46
-rw-r--r--Build/source/texk/gregorio/gregorio-4.0.0-beta2/windows/gregorio-resources.rc25
-rwxr-xr-xBuild/source/texk/gregorio/gregorio.test38
-rw-r--r--Build/source/texk/gregorio/version.ac11
-rw-r--r--Build/source/utils/Makefile.in1
-rwxr-xr-xBuild/source/utils/configure24
119 files changed, 67047 insertions, 0 deletions
diff --git a/Build/source/Makefile.in b/Build/source/Makefile.in
index 40d1efd0e46..e89f804042b 100644
--- a/Build/source/Makefile.in
+++ b/Build/source/Makefile.in
@@ -154,6 +154,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/kpse-cairo-flags.m4 \
$(top_srcdir)/texk/dvisvgm/ac/withenable.ac \
$(top_srcdir)/texk/dvisvgm/ac/dvisvgm.ac \
$(top_srcdir)/texk/dvisvgm/ac/libgs.ac \
+ $(top_srcdir)/texk/gregorio/ac/withenable.ac \
$(top_srcdir)/texk/gsftopk/ac/withenable.ac \
$(top_srcdir)/texk/lcdf-typetools/ac/withenable.ac \
$(top_srcdir)/texk/lcdf-typetools/ac/lcdf-typetools.ac \
diff --git a/Build/source/configure b/Build/source/configure
index c805f8f194c..2cc336b4276 100755
--- a/Build/source/configure
+++ b/Build/source/configure
@@ -867,6 +867,7 @@ with_libgs
with_system_libgs
with_libgs_includes
with_libgs_libdir
+enable_gregorio
enable_gsftopk
enable_lcdf_typetools
enable_cfftot1
@@ -1673,6 +1674,7 @@ Optional Features:
--disable-dvipos do not build the dvipos package
--disable-dvipsk do not build the dvipsk package
--disable-dvisvgm do not build the dvisvgm package
+ --disable-gregorio do not build the gregorio package
--disable-gsftopk do not build the gsftopk package
--disable-lcdf-typetools
do not build the lcdf-typetools package
@@ -5255,6 +5257,28 @@ if test "x$enable_native_texlive_build:$with_system_libgs" = xyes:yes; then
as_fn_error $? "you can not use system libraries for a native TeX Live build" "$LINENO" 5
fi
+## texk/gregorio/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gregorio/
+## configure options and TL libraries required for gregorio
+# Check whether --enable-gregorio was given.
+if test "${enable_gregorio+set}" = set; then :
+ enableval=$enable_gregorio;
+fi
+case $enable_gregorio in #(
+ yes|no) :
+ ;; #(
+ *) :
+
+ enable_gregorio=$enable_all_pkgs
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-gregorio=$enable_gregorio'" >&5
+$as_echo "$as_me: Assuming \`--enable-gregorio=$enable_gregorio'" >&6;}
+ ac_configure_args="$ac_configure_args '--enable-gregorio=$enable_gregorio'"
+ ;;
+esac
+
+test "x$enable_gregorio" = xno || {
+ need_kpathsea=yes
+}
+
## texk/gsftopk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gsftopk/
## configure options and TL libraries required for gsftopk
# Check whether --enable-gsftopk was given.
diff --git a/Build/source/doc/Makefile.in b/Build/source/doc/Makefile.in
index 0e3d1098f32..dd2649f6e74 100644
--- a/Build/source/doc/Makefile.in
+++ b/Build/source/doc/Makefile.in
@@ -154,6 +154,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/kpse-cairo-flags.m4 \
$(top_srcdir)/texk/dvisvgm/ac/withenable.ac \
$(top_srcdir)/texk/dvisvgm/ac/dvisvgm.ac \
$(top_srcdir)/texk/dvisvgm/ac/libgs.ac \
+ $(top_srcdir)/texk/gregorio/ac/withenable.ac \
$(top_srcdir)/texk/gsftopk/ac/withenable.ac \
$(top_srcdir)/texk/lcdf-typetools/ac/withenable.ac \
$(top_srcdir)/texk/lcdf-typetools/ac/lcdf-typetools.ac \
diff --git a/Build/source/libs/Makefile.in b/Build/source/libs/Makefile.in
index 009a139ffc3..e14c0c92be2 100644
--- a/Build/source/libs/Makefile.in
+++ b/Build/source/libs/Makefile.in
@@ -152,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-cairo-flags.m4 \
$(top_srcdir)/../texk/dvisvgm/ac/withenable.ac \
$(top_srcdir)/../texk/dvisvgm/ac/dvisvgm.ac \
$(top_srcdir)/../texk/dvisvgm/ac/libgs.ac \
+ $(top_srcdir)/../texk/gregorio/ac/withenable.ac \
$(top_srcdir)/../texk/gsftopk/ac/withenable.ac \
$(top_srcdir)/../texk/lcdf-typetools/ac/withenable.ac \
$(top_srcdir)/../texk/lcdf-typetools/ac/lcdf-typetools.ac \
diff --git a/Build/source/libs/configure b/Build/source/libs/configure
index b1272113389..5798c96ddd3 100755
--- a/Build/source/libs/configure
+++ b/Build/source/libs/configure
@@ -778,6 +778,7 @@ with_libgs
with_system_libgs
with_libgs_includes
with_libgs_libdir
+enable_gregorio
enable_gsftopk
enable_lcdf_typetools
enable_cfftot1
@@ -1578,6 +1579,7 @@ Optional Features:
--disable-dvipos do not build the dvipos package
--disable-dvipsk do not build the dvipsk package
--disable-dvisvgm do not build the dvisvgm package
+ --disable-gregorio do not build the gregorio package
--disable-gsftopk do not build the gsftopk package
--disable-lcdf-typetools
do not build the lcdf-typetools package
@@ -4453,6 +4455,28 @@ if test "x$enable_native_texlive_build:$with_system_libgs" = xyes:yes; then
as_fn_error $? "you can not use system libraries for a native TeX Live build" "$LINENO" 5
fi
+## texk/gregorio/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gregorio/
+## configure options and TL libraries required for gregorio
+# Check whether --enable-gregorio was given.
+if test "${enable_gregorio+set}" = set; then :
+ enableval=$enable_gregorio;
+fi
+case $enable_gregorio in #(
+ yes|no) :
+ ;; #(
+ *) :
+
+ enable_gregorio=$enable_all_pkgs
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-gregorio=$enable_gregorio'" >&5
+$as_echo "$as_me: Assuming \`--enable-gregorio=$enable_gregorio'" >&6;}
+ ac_configure_args="$ac_configure_args '--enable-gregorio=$enable_gregorio'"
+ ;;
+esac
+
+test "x$enable_gregorio" = xno || {
+ need_kpathsea=yes
+}
+
## texk/gsftopk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gsftopk/
## configure options and TL libraries required for gsftopk
# Check whether --enable-gsftopk was given.
diff --git a/Build/source/m4/ChangeLog b/Build/source/m4/ChangeLog
index 028e4931ce2..df104694457 100644
--- a/Build/source/m4/ChangeLog
+++ b/Build/source/m4/ChangeLog
@@ -1,3 +1,7 @@
+2015-08-14 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * kpse-pkgs.m4 (kpse_texk_pkgs): Add gregorio.
+
2015-08-13 Peter Breitenlohner <peb@mppmu.mpg.de>
* kpse-setup.m4: Allow shared libraries (DLLs) in native TeXLive
diff --git a/Build/source/m4/kpse-pkgs.m4 b/Build/source/m4/kpse-pkgs.m4
index 744e0c873c3..eb0c0160b08 100644
--- a/Build/source/m4/kpse-pkgs.m4
+++ b/Build/source/m4/kpse-pkgs.m4
@@ -114,6 +114,7 @@ dvipng
dvipos
dvipsk
dvisvgm
+gregorio
gsftopk
lcdf-typetools
makeindexk
diff --git a/Build/source/texk/Makefile.in b/Build/source/texk/Makefile.in
index 955643d478d..94eeb1fea5e 100644
--- a/Build/source/texk/Makefile.in
+++ b/Build/source/texk/Makefile.in
@@ -152,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-cairo-flags.m4 \
$(top_srcdir)/../texk/dvisvgm/ac/withenable.ac \
$(top_srcdir)/../texk/dvisvgm/ac/dvisvgm.ac \
$(top_srcdir)/../texk/dvisvgm/ac/libgs.ac \
+ $(top_srcdir)/../texk/gregorio/ac/withenable.ac \
$(top_srcdir)/../texk/gsftopk/ac/withenable.ac \
$(top_srcdir)/../texk/lcdf-typetools/ac/withenable.ac \
$(top_srcdir)/../texk/lcdf-typetools/ac/lcdf-typetools.ac \
diff --git a/Build/source/texk/README b/Build/source/texk/README
index cc2144bdf57..22221742b75 100644
--- a/Build/source/texk/README
+++ b/Build/source/texk/README
@@ -62,6 +62,9 @@ dvipsk - maintained here, by us
dvisvgm 1.10 - checked 28jul15
http://dvisvgm.2ix.de/Downloads
+gregorio 4.0.0-beta2
+ https://github.com/gregorio-project/gregorio/releases/
+
gsftopk - from Paul Vojta's xdvi?
kpathsea - maintained here, by us
diff --git a/Build/source/texk/configure b/Build/source/texk/configure
index 1bc08b4c435..f0a12aa6f95 100755
--- a/Build/source/texk/configure
+++ b/Build/source/texk/configure
@@ -778,6 +778,7 @@ with_libgs
with_system_libgs
with_libgs_includes
with_libgs_libdir
+enable_gregorio
enable_gsftopk
enable_lcdf_typetools
enable_cfftot1
@@ -872,6 +873,7 @@ dvipng
dvipos
dvipsk
dvisvgm
+gregorio
gsftopk
lcdf-typetools
makeindexk
@@ -1588,6 +1590,7 @@ Optional Features:
--disable-dvipos do not build the dvipos package
--disable-dvipsk do not build the dvipsk package
--disable-dvisvgm do not build the dvisvgm package
+ --disable-gregorio do not build the gregorio package
--disable-gsftopk do not build the gsftopk package
--disable-lcdf-typetools
do not build the lcdf-typetools package
@@ -4463,6 +4466,28 @@ if test "x$enable_native_texlive_build:$with_system_libgs" = xyes:yes; then
as_fn_error $? "you can not use system libraries for a native TeX Live build" "$LINENO" 5
fi
+## texk/gregorio/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gregorio/
+## configure options and TL libraries required for gregorio
+# Check whether --enable-gregorio was given.
+if test "${enable_gregorio+set}" = set; then :
+ enableval=$enable_gregorio;
+fi
+case $enable_gregorio in #(
+ yes|no) :
+ ;; #(
+ *) :
+
+ enable_gregorio=$enable_all_pkgs
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-gregorio=$enable_gregorio'" >&5
+$as_echo "$as_me: Assuming \`--enable-gregorio=$enable_gregorio'" >&6;}
+ ac_configure_args="$ac_configure_args '--enable-gregorio=$enable_gregorio'"
+ ;;
+esac
+
+test "x$enable_gregorio" = xno || {
+ need_kpathsea=yes
+}
+
## texk/gsftopk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gsftopk/
## configure options and TL libraries required for gsftopk
# Check whether --enable-gsftopk was given.
@@ -6524,6 +6549,14 @@ if test -x $srcdir/dvisvgm/configure; then
fi
fi
+if test -x $srcdir/gregorio/configure; then
+ test "x$enable_gregorio" = xyes && MAKE_SUBDIRS="$MAKE_SUBDIRS gregorio"
+ CONF_SUBDIRS="$CONF_SUBDIRS gregorio"
+ if false; then
+ subdirs="$subdirs gregorio"
+
+ fi
+fi
if test -x $srcdir/gsftopk/configure; then
test "x$enable_gsftopk" = xyes && MAKE_SUBDIRS="$MAKE_SUBDIRS gsftopk"
CONF_SUBDIRS="$CONF_SUBDIRS gsftopk"
diff --git a/Build/source/texk/gregorio/ChangeLog b/Build/source/texk/gregorio/ChangeLog
new file mode 100644
index 00000000000..a57cafab1a5
--- /dev/null
+++ b/Build/source/texk/gregorio/ChangeLog
@@ -0,0 +1,11 @@
+2015-09-02 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import gregorio-4.0.0-beta2.
+ * Makefile.am, configure.ac, version.ac: Adapted.
+
+ * Makefile.am, gregorio.test: Create factus.gtex and veni.gtex.
+
+2015-08-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import gregorio-4.0.0-beta.
+
diff --git a/Build/source/texk/gregorio/Makefile.am b/Build/source/texk/gregorio/Makefile.am
new file mode 100644
index 00000000000..e7f3d344117
--- /dev/null
+++ b/Build/source/texk/gregorio/Makefile.am
@@ -0,0 +1,60 @@
+## Makefile.am for the TeX Live subdirectory texk/gregorio/
+##
+## Copyright (C) 2015 Peter Breitenlohner <tex-live@tug.org>
+## You may freely use, modify and/or distribute this file.
+##
+## We want to re-distribute the whole original gregorio source tree.
+EXTRA_DIST = $(GREGORIO_TREE)
+## Patches applied to the original source tree
+EXTRA_DIST += $(GREGORIO_TREE)-PATCHES
+
+# Files not to be distributed
+include $(srcdir)/../../am/dist_hook.am
+NEVER_NAMES += $(NEVER_NAMES_SUB)
+
+AM_CPPFLAGS = \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src/gabc \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src/dump \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src/gregoriotex \
+ $(KPATHSEA_INCLUDES) -D_GNU_SOURCE -DUSE_KPSE
+AM_CFLAGS = $(WARNING_CFLAGS)
+
+bin_PROGRAMS = gregorio
+
+gregorio_SOURCES = \
+ @GREGORIO_TREE@/src/characters.c \
+ @GREGORIO_TREE@/src/gregorio-utils.c \
+ @GREGORIO_TREE@/src/messages.c \
+ @GREGORIO_TREE@/src/sha1.c \
+ @GREGORIO_TREE@/src/struct.c \
+ @GREGORIO_TREE@/src/support.c \
+ @GREGORIO_TREE@/src/unicode.c \
+ @GREGORIO_TREE@/src/dump/dump.c \
+ @GREGORIO_TREE@/src/gabc/gabc-elements-determination.c \
+ @GREGORIO_TREE@/src/gabc/gabc-glyphs-determination.c \
+ @GREGORIO_TREE@/src/gabc/gabc-notes-determination-l.c \
+ @GREGORIO_TREE@/src/gabc/gabc-score-determination-l.c \
+ @GREGORIO_TREE@/src/gabc/gabc-score-determination-y.c \
+ @GREGORIO_TREE@/src/gabc/gabc-write.c \
+ @GREGORIO_TREE@/src/gregoriotex/gregoriotex-position.c \
+ @GREGORIO_TREE@/src/gregoriotex/gregoriotex-write.c \
+ @GREGORIO_TREE@/src/vowel/vowel.c \
+ @GREGORIO_TREE@/src/vowel/vowel-rules-l.c \
+ @GREGORIO_TREE@/src/vowel/vowel-rules-y.c
+
+LDADD = $(KPATHSEA_LIBS)
+
+$(gregorio_OBJECTS): $(KPATHSEA_DEPEND)
+
+## Rebuild libkpathsea
+@KPATHSEA_RULE@
+
+## TESTS
+##
+TESTS_ENVIRONMENT = GREGORIO_TREE='$(GREGORIO_TREE)'
+TESTS = gregorio.test
+gregorio.log: gregorio$(EXEEXT)
+EXTRA_DIST += $(TESTS)
+DISTCLEANFILES = factus.gtex veni.gtex
+
diff --git a/Build/source/texk/gregorio/Makefile.in b/Build/source/texk/gregorio/Makefile.in
new file mode 100644
index 00000000000..b805fa5f468
--- /dev/null
+++ b/Build/source/texk/gregorio/Makefile.in
@@ -0,0 +1,1401 @@
+# 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 = gregorio$(EXEEXT)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-kpathsea-flags.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.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)/version.ac \
+ $(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 = config_.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_gregorio_OBJECTS = @GREGORIO_TREE@/src/characters.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gregorio-utils.$(OBJEXT) \
+ @GREGORIO_TREE@/src/messages.$(OBJEXT) \
+ @GREGORIO_TREE@/src/sha1.$(OBJEXT) \
+ @GREGORIO_TREE@/src/struct.$(OBJEXT) \
+ @GREGORIO_TREE@/src/support.$(OBJEXT) \
+ @GREGORIO_TREE@/src/unicode.$(OBJEXT) \
+ @GREGORIO_TREE@/src/dump/dump.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gabc/gabc-elements-determination.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gabc/gabc-glyphs-determination.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gabc/gabc-notes-determination-l.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gabc/gabc-score-determination-l.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gabc/gabc-score-determination-y.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gabc/gabc-write.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gregoriotex/gregoriotex-position.$(OBJEXT) \
+ @GREGORIO_TREE@/src/gregoriotex/gregoriotex-write.$(OBJEXT) \
+ @GREGORIO_TREE@/src/vowel/vowel.$(OBJEXT) \
+ @GREGORIO_TREE@/src/vowel/vowel-rules-l.$(OBJEXT) \
+ @GREGORIO_TREE@/src/vowel/vowel-rules-y.$(OBJEXT)
+gregorio_OBJECTS = $(am_gregorio_OBJECTS)
+gregorio_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+gregorio_DEPENDENCIES = $(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 =
+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)/../../build-aux/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 = $(gregorio_SOURCES)
+DIST_SOURCES = $(gregorio_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)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 check recheck
+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=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ 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
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/../../build-aux/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__DIST_COMMON = $(srcdir)/../../am/dist_hook.am \
+ $(srcdir)/Makefile.in $(srcdir)/config_.h.in \
+ $(top_srcdir)/../../build-aux/compile \
+ $(top_srcdir)/../../build-aux/config.guess \
+ $(top_srcdir)/../../build-aux/config.sub \
+ $(top_srcdir)/../../build-aux/depcomp \
+ $(top_srcdir)/../../build-aux/install-sh \
+ $(top_srcdir)/../../build-aux/ltmain.sh \
+ $(top_srcdir)/../../build-aux/missing \
+ $(top_srcdir)/../../build-aux/test-driver \
+ ../../build-aux/compile ../../build-aux/config.guess \
+ ../../build-aux/config.sub ../../build-aux/depcomp \
+ ../../build-aux/install-sh ../../build-aux/ltmain.sh \
+ ../../build-aux/missing ../../build-aux/texinfo.tex \
+ ../../build-aux/ylwrap ChangeLog
+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
+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@
+AS = @AS@
+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@
+GREGORIO_TREE = @GREGORIO_TREE@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KPATHSEA_DEPEND = @KPATHSEA_DEPEND@
+KPATHSEA_INCLUDES = @KPATHSEA_INCLUDES@
+KPATHSEA_LIBS = @KPATHSEA_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+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@
+PERL5 = @PERL5@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+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@
+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@
+EXTRA_DIST = $(GREGORIO_TREE) $(GREGORIO_TREE)-PATCHES $(TESTS)
+NEVER_DIST = `find . $(NEVER_NAMES)`
+
+# Files not to be distributed
+NEVER_NAMES = -name .svn $(NEVER_NAMES_SUB)
+NEVER_NAMES_SUB = -o -name .deps -o -name .dirstamp -o -name '*.$(OBJEXT)'
+NEVER_NAMES_LT = -o -name .libs -o -name '*.lo'
+AM_CPPFLAGS = \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src/gabc \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src/dump \
+ -I$(top_srcdir)/$(GREGORIO_TREE)/src/gregoriotex \
+ $(KPATHSEA_INCLUDES) -D_GNU_SOURCE -DUSE_KPSE
+
+AM_CFLAGS = $(WARNING_CFLAGS)
+gregorio_SOURCES = \
+ @GREGORIO_TREE@/src/characters.c \
+ @GREGORIO_TREE@/src/gregorio-utils.c \
+ @GREGORIO_TREE@/src/messages.c \
+ @GREGORIO_TREE@/src/sha1.c \
+ @GREGORIO_TREE@/src/struct.c \
+ @GREGORIO_TREE@/src/support.c \
+ @GREGORIO_TREE@/src/unicode.c \
+ @GREGORIO_TREE@/src/dump/dump.c \
+ @GREGORIO_TREE@/src/gabc/gabc-elements-determination.c \
+ @GREGORIO_TREE@/src/gabc/gabc-glyphs-determination.c \
+ @GREGORIO_TREE@/src/gabc/gabc-notes-determination-l.c \
+ @GREGORIO_TREE@/src/gabc/gabc-score-determination-l.c \
+ @GREGORIO_TREE@/src/gabc/gabc-score-determination-y.c \
+ @GREGORIO_TREE@/src/gabc/gabc-write.c \
+ @GREGORIO_TREE@/src/gregoriotex/gregoriotex-position.c \
+ @GREGORIO_TREE@/src/gregoriotex/gregoriotex-write.c \
+ @GREGORIO_TREE@/src/vowel/vowel.c \
+ @GREGORIO_TREE@/src/vowel/vowel-rules-l.c \
+ @GREGORIO_TREE@/src/vowel/vowel-rules-y.c
+
+LDADD = $(KPATHSEA_LIBS)
+TESTS_ENVIRONMENT = GREGORIO_TREE='$(GREGORIO_TREE)'
+TESTS = gregorio.test
+DISTCLEANFILES = factus.gtex veni.gtex
+all: config_.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../../am/dist_hook.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;
+$(srcdir)/../../am/dist_hook.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config_.h: stamp-h1
+ @test -f $@ || rm -f stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config_.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config_.h
+$(srcdir)/config_.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config_.h stamp-h1
+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
+@GREGORIO_TREE@/src/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src
+ @: > @GREGORIO_TREE@/src/$(am__dirstamp)
+@GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/$(DEPDIR)
+ @: > @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/characters.$(OBJEXT): \
+ @GREGORIO_TREE@/src/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gregorio-utils.$(OBJEXT): \
+ @GREGORIO_TREE@/src/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/messages.$(OBJEXT): \
+ @GREGORIO_TREE@/src/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/sha1.$(OBJEXT): \
+ @GREGORIO_TREE@/src/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/struct.$(OBJEXT): \
+ @GREGORIO_TREE@/src/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/support.$(OBJEXT): \
+ @GREGORIO_TREE@/src/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/unicode.$(OBJEXT): \
+ @GREGORIO_TREE@/src/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/dump/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/dump
+ @: > @GREGORIO_TREE@/src/dump/$(am__dirstamp)
+@GREGORIO_TREE@/src/dump/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/dump/$(DEPDIR)
+ @: > @GREGORIO_TREE@/src/dump/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/dump/dump.$(OBJEXT): \
+ @GREGORIO_TREE@/src/dump/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/dump/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/gabc
+ @: > @GREGORIO_TREE@/src/gabc/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/gabc/$(DEPDIR)
+ @: > @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/gabc-elements-determination.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gabc/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/gabc-glyphs-determination.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gabc/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/gabc-notes-determination-l.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gabc/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/gabc-score-determination-l.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gabc/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/gabc-score-determination-y.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gabc/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gabc/gabc-write.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gabc/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gregoriotex/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/gregoriotex
+ @: > @GREGORIO_TREE@/src/gregoriotex/$(am__dirstamp)
+@GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)
+ @: > @GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gregoriotex/gregoriotex-position.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gregoriotex/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/gregoriotex/gregoriotex-write.$(OBJEXT): \
+ @GREGORIO_TREE@/src/gregoriotex/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/vowel/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/vowel
+ @: > @GREGORIO_TREE@/src/vowel/$(am__dirstamp)
+@GREGORIO_TREE@/src/vowel/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) @GREGORIO_TREE@/src/vowel/$(DEPDIR)
+ @: > @GREGORIO_TREE@/src/vowel/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/vowel/vowel.$(OBJEXT): \
+ @GREGORIO_TREE@/src/vowel/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/vowel/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/vowel/vowel-rules-l.$(OBJEXT): \
+ @GREGORIO_TREE@/src/vowel/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/vowel/$(DEPDIR)/$(am__dirstamp)
+@GREGORIO_TREE@/src/vowel/vowel-rules-y.$(OBJEXT): \
+ @GREGORIO_TREE@/src/vowel/$(am__dirstamp) \
+ @GREGORIO_TREE@/src/vowel/$(DEPDIR)/$(am__dirstamp)
+
+gregorio$(EXEEXT): $(gregorio_OBJECTS) $(gregorio_DEPENDENCIES) $(EXTRA_gregorio_DEPENDENCIES)
+ @rm -f gregorio$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(gregorio_OBJECTS) $(gregorio_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f @GREGORIO_TREE@/src/*.$(OBJEXT)
+ -rm -f @GREGORIO_TREE@/src/dump/*.$(OBJEXT)
+ -rm -f @GREGORIO_TREE@/src/gabc/*.$(OBJEXT)
+ -rm -f @GREGORIO_TREE@/src/gregoriotex/*.$(OBJEXT)
+ -rm -f @GREGORIO_TREE@/src/vowel/*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/$(DEPDIR)/characters.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/$(DEPDIR)/gregorio-utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/$(DEPDIR)/messages.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/$(DEPDIR)/sha1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/$(DEPDIR)/struct.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/$(DEPDIR)/support.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/$(DEPDIR)/unicode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/dump/$(DEPDIR)/dump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gabc/$(DEPDIR)/gabc-elements-determination.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gabc/$(DEPDIR)/gabc-glyphs-determination.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gabc/$(DEPDIR)/gabc-notes-determination-l.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gabc/$(DEPDIR)/gabc-score-determination-l.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gabc/$(DEPDIR)/gabc-score-determination-y.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gabc/$(DEPDIR)/gabc-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)/gregoriotex-position.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)/gregoriotex-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/vowel/$(DEPDIR)/vowel-rules-l.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/vowel/$(DEPDIR)/vowel-rules-y.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@@GREGORIO_TREE@/src/vowel/$(DEPDIR)/vowel.Po@am__quote@
+
+.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 $@ $<
+
+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
+
+# 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 $$?
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_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
+ $(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-am
+all-am: Makefile $(PROGRAMS) config_.h
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+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:
+ -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)
+ -rm -f @GREGORIO_TREE@/src/$(DEPDIR)/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/dump/$(DEPDIR)/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/dump/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/gabc/$(DEPDIR)/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/gabc/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/gregoriotex/$(DEPDIR)/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/gregoriotex/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/vowel/$(DEPDIR)/$(am__dirstamp)
+ -rm -f @GREGORIO_TREE@/src/vowel/$(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."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf @GREGORIO_TREE@/src/$(DEPDIR) @GREGORIO_TREE@/src/dump/$(DEPDIR) @GREGORIO_TREE@/src/gabc/$(DEPDIR) @GREGORIO_TREE@/src/gregoriotex/$(DEPDIR) @GREGORIO_TREE@/src/vowel/$(DEPDIR)
+ -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-binPROGRAMS
+
+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 -rf @GREGORIO_TREE@/src/$(DEPDIR) @GREGORIO_TREE@/src/dump/$(DEPDIR) @GREGORIO_TREE@/src/gabc/$(DEPDIR) @GREGORIO_TREE@/src/gregoriotex/$(DEPDIR) @GREGORIO_TREE@/src/vowel/$(DEPDIR)
+ -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: uninstall-binPROGRAMS
+
+.MAKE: all check-am install-am install-strip
+
+.PHONY: 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-hdr \
+ 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 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
+
+dist-hook:
+ cd "$(distdir)" && rm -rf $(NEVER_DIST)
+
+$(gregorio_OBJECTS): $(KPATHSEA_DEPEND)
+
+@KPATHSEA_RULE@
+gregorio.log: gregorio$(EXEEXT)
+
+# 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/Build/source/texk/gregorio/ac/withenable.ac b/Build/source/texk/gregorio/ac/withenable.ac
new file mode 100644
index 00000000000..3f0747c05d4
--- /dev/null
+++ b/Build/source/texk/gregorio/ac/withenable.ac
@@ -0,0 +1,7 @@
+## texk/gregorio/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gregorio/
+dnl
+dnl Copyright (C) 2015 Peter Breitenlohner <tex-live@tug.org>
+dnl You may freely use, modify and/or distribute this file.
+dnl
+## configure options and TL libraries required for gregorio
+KPSE_ENABLE_PROG([gregorio], [kpathsea])
diff --git a/Build/source/texk/gregorio/aclocal.m4 b/Build/source/texk/gregorio/aclocal.m4
new file mode 100644
index 00000000000..e7c18a120a2
--- /dev/null
+++ b/Build/source/texk/gregorio/aclocal.m4
@@ -0,0 +1,1196 @@
+# 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'.])])
+
+# 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])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# 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_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+ am_maintainer_other[ make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer])],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+# 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/kpse-common.m4])
+m4_include([../../m4/kpse-kpathsea-flags.m4])
+m4_include([../../m4/kpse-warnings.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/Build/source/texk/gregorio/config_.h.in b/Build/source/texk/gregorio/config_.h.in
new file mode 100644
index 00000000000..1522aa9beda
--- /dev/null
+++ b/Build/source/texk/gregorio/config_.h.in
@@ -0,0 +1,191 @@
+/* config_.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+#undef CLOSEDIR_VOID
+
+/* Define to 1 if you have the <assert.h> header file. */
+#undef HAVE_ASSERT_H
+
+/* Define to 1 if you have the declaration of `isascii', and to 0 if you
+ don't. */
+#undef HAVE_DECL_ISASCII
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
+/* Define to 1 if you have the `getwd' function. */
+#undef HAVE_GETWD
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the `memcmp' function. */
+#undef HAVE_MEMCMP
+
+/* Define to 1 if you have the `memcpy' function. */
+#undef HAVE_MEMCPY
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have the `mktemp' function. */
+#undef HAVE_MKTEMP
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if you have the `putenv' function. */
+#undef HAVE_PUTENV
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define to 1 if you have the <stdalign.h> header file. */
+#undef HAVE_STDALIGN_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 `strchr' function. */
+#undef HAVE_STRCHR
+
+/* 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 `strrchr' function. */
+#undef HAVE_STRRCHR
+
+/* Define to 1 if `st_mtim' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_MTIM
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_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 to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* 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
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+ <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+ #define below would cause a syntax error. */
+#undef _UINT64_T
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+ such a type exists and the standard includes do not define it. */
+#undef int64_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to the type of an unsigned integer type of width exactly 64 bits if
+ such a type exists and the standard includes do not define it. */
+#undef uint64_t
diff --git a/Build/source/texk/gregorio/configure b/Build/source/texk/gregorio/configure
new file mode 100755
index 00000000000..9b4d57339cf
--- /dev/null
+++ b/Build/source/texk/gregorio/configure
@@ -0,0 +1,17554 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for ChkTeX (TeX Live) 4.0.0-beta2.
+#
+# Report bugs to <tex-k@tug.org>.
+#
+#
+# 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 tex-k@tug.org
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: 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='ChkTeX (TeX Live)'
+PACKAGE_TARNAME='chktex--tex-live-'
+PACKAGE_VERSION='4.0.0-beta2'
+PACKAGE_STRING='ChkTeX (TeX Live) 4.0.0-beta2'
+PACKAGE_BUGREPORT='tex-k@tug.org'
+PACKAGE_URL=''
+
+ac_unique_file="gregorio-4.0.0-beta2/src/gregorio-utils.c"
+# 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
+KPATHSEA_RULE
+KPATHSEA_DEPEND
+KPATHSEA_LIBS
+KPATHSEA_INCLUDES
+PKG_CONFIG
+PERL5
+GREGORIO_TREE
+CPP
+LT_SYS_LIBRARY_PATH
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+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
+OBJDUMP
+DLLTOOL
+AS
+WARNING_CFLAGS
+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
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+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_maintainer_mode
+enable_dependency_tracking
+enable_compiler_warnings
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_aix_soname
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_largefile
+with_system_kpathsea
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+LT_SYS_LIBRARY_PATH
+CPP'
+
+
+# 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 ChkTeX (TeX Live) 4.0.0-beta2 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/chktex--tex-live-]
+ --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 ChkTeX (TeX Live) 4.0.0-beta2:";;
+ 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-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
+ --enable-compiler-warnings=[no|min|yes|max|all]
+ Turn on compiler warnings [default: yes if
+ maintainer-mode, min otherwise]
+ --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)
+ --disable-largefile omit support for large files
+
+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).
+ --with-system-kpathsea use installed kpathsea headers and library (requires
+ pkg-config)
+
+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>
+ LT_SYS_LIBRARY_PATH
+ User-defined run-time library search path.
+ CPP C preprocessor
+
+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 <tex-k@tug.org>.
+_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
+ChkTeX (TeX Live) configure 4.0.0-beta2
+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 tex-k@tug.org ##
+## ---------------------------- ##"
+ ) | 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_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_find_intX_t LINENO BITS VAR
+# -----------------------------------
+# Finds a signed integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_intX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
+$as_echo_n "checking for int$2_t... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ # Order is important - never check a type that is potentially smaller
+ # than half of the expected target width.
+ for ac_type in int$2_t 'int' 'long int' \
+ 'long long int' 'short int' 'signed char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+ enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+ enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
+ < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ case $ac_type in #(
+ int$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+ break
+fi
+ done
+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_find_intX_t
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ # Order is important - never check a type that is potentially smaller
+ # than half of the expected target width.
+ for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ case $ac_type in #(
+ uint$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+ break
+fi
+ done
+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_find_uintX_t
+
+# 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
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$4=yes"
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$4=yes"
+else
+ eval "$4=no"
+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=\$$4
+ { $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_member
+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 ChkTeX (TeX Live) $as_me 4.0.0-beta2, 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 ../../build-aux "$srcdir"/../../build-aux; 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 ../../build-aux \"$srcdir\"/../../build-aux" "$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='\'
+
+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
+
+
+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
+
+
+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
+
+
+
+# Check whether --enable-compiler-warnings was given.
+if test "${enable_compiler_warnings+set}" = set; then :
+ enableval=$enable_compiler_warnings;
+fi
+case $enable_compiler_warnings in #(
+ no | min | yes | max | all) :
+ ;; #(
+ *) :
+ if test "x$enable_maintainer_mode" = xyes; then :
+ enable_compiler_warnings=yes
+else
+ enable_compiler_warnings=min
+fi ;;
+esac
+
+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'
+macro_revision='2.4.6'
+
+
+
+
+
+
+
+
+
+
+
+
+
+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 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}
+: ${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 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++,
+ # 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 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 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
+}
+
+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
+
+
+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='chktex--tex-live-'
+ VERSION='4.0.0-beta2'
+
+
+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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler accepts prototypes" >&5
+$as_echo_n "checking whether the compiler accepts prototypes... " >&6; }
+if ${kb_cv_c_prototypes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+int
+main ()
+{
+extern void foo(int i,...);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ kb_cv_c_prototypes=yes
+else
+ kb_cv_c_prototypes=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kb_cv_c_prototypes" >&5
+$as_echo "$kb_cv_c_prototypes" >&6; }
+if test "x$kb_cv_c_prototypes" = xno; then
+ as_fn_error $? "Sorry, your compiler does not understand prototypes." "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what warning flags to pass to the C compiler" >&5
+$as_echo_n "checking what warning flags to pass to the C compiler... " >&6; }
+if ${kpse_cv_warning_cflags+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$GCC" = xyes; then
+ kpse_cv_warning_cflags=
+if test "x$enable_compiler_warnings" != xno; then
+ kpse_cv_warning_cflags="-Wimplicit -Wreturn-type"
+ case `$CC -dumpversion` in #(
+ 3.4.* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement" ;; #(
+ *) :
+ ;;
+esac
+ case `$CC -dumpversion` in #(
+ 3.[234].* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas" ;; #(
+ *) :
+ ;;
+esac
+ if test "x$enable_compiler_warnings" != xmin; then
+ kpse_cv_warning_cflags="-Wall -Wunused $kpse_cv_warning_cflags"
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations"
+ if test "x$enable_compiler_warnings" != xyes; then
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wparentheses -Wswitch -Wtrigraphs -Wpointer-arith"
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings"
+ case `$CC -dumpversion` in #(
+ 3.4.* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition" ;; #(
+ *) :
+ ;;
+esac
+ if test "x$enable_compiler_warnings" != xmax; then
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wshadow"
+ fi
+ fi
+ fi
+fi
+elif test "x$enable_compiler_warnings" = xno; then
+ kpse_cv_warning_cflags=
+else
+ kpse_cv_warning_cflags= # FIXME: warning flags for non-GNU C compilers
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_warning_cflags" >&5
+$as_echo "$kpse_cv_warning_cflags" >&6; }
+WARNING_CFLAGS=$kpse_cv_warning_cflags
+
+
+
+
+
+
+
+
+
+
+
+
+# Set options
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; 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_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # 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_AS="${ac_tool_prefix}as"
+ $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
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; 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_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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_AS="as"
+ $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_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AS" = x; then
+ AS="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
+ AS=$ac_ct_AS
+ fi
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+ 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
+
+ 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
+
+ ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+ enable_dlopen=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,
+# 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
+
+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++ 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 yes != "$GCC"; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ 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
+ ;;
+
+ 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 == "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++.
+ # 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,-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 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
+ ;;
+
+ 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*)
+ # 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$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 -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 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_source+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h> /* for off_t */
+ #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_sys_largefile_source=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGEFILE_SOURCE 1
+#include <sys/types.h> /* for off_t */
+ #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_sys_largefile_source=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_cv_sys_largefile_source=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
+$as_echo "$ac_cv_sys_largefile_source" >&6; }
+case $ac_cv_sys_largefile_source in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+_ACEOF
+;;
+esac
+rm -rf conftest*
+
+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+# in glibc 2.1.3, but that breaks too many other things.
+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+if test $ac_cv_sys_largefile_source != unknown; then
+
+$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
+
+fi
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
+if eval \${$as_ac_Header+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$as_ac_Header=yes"
+else
+ eval "$as_ac_Header=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_ac_Header
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$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 opendir ();
+int
+main ()
+{
+return opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' dir; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_opendir+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_opendir+:} false; then :
+
+else
+ ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$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 opendir ();
+int
+main ()
+{
+return opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' x; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_opendir+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_opendir+:} false; then :
+
+else
+ ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+
+{ $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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
+$as_echo_n "checking whether closedir returns void... " >&6; }
+if ${ac_cv_func_closedir_void+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ac_cv_func_closedir_void=yes
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header_dirent>
+#ifndef __cplusplus
+int closedir ();
+#endif
+
+int
+main ()
+{
+return closedir (opendir (".")) != 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_func_closedir_void=no
+else
+ ac_cv_func_closedir_void=yes
+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: $ac_cv_func_closedir_void" >&5
+$as_echo "$ac_cv_func_closedir_void" >&6; }
+if test $ac_cv_func_closedir_void = yes; then
+
+$as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h
+
+fi
+
+for ac_header in assert.h float.h limits.h pwd.h stdlib.h sys/param.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$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_func in putenv
+do :
+ ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv"
+if test "x$ac_cv_func_putenv" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_PUTENV 1
+_ACEOF
+
+fi
+done
+
+for ac_func in getcwd getwd memcmp memcpy mkstemp mktemp strchr strrchr
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this sort of thing. */
+ typedef int charset[2];
+ const charset cs = { 0, 0 };
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *pcpcc;
+ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++pcpcc;
+ ppc = (char**) pcpcc;
+ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ if (!foo) return 0;
+ }
+ return !cs[0] && !zero.x;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_const=yes
+else
+ ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t"
+case $ac_cv_c_int64_t in #(
+ no|yes) ;; #(
+ *)
+
+cat >>confdefs.h <<_ACEOF
+#define int64_t $ac_cv_c_int64_t
+_ACEOF
+;;
+esac
+
+ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t"
+case $ac_cv_c_uint64_t in #(
+ no|yes) ;; #(
+ *)
+
+$as_echo "#define _UINT64_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint64_t $ac_cv_c_uint64_t
+_ACEOF
+;;
+ esac
+
+case :$ac_cv_c_int64_t:$ac_cv_c_int64_t: in #(
+ *':no:'*) :
+ as_fn_error $? "Sorry, your compiler does not support 64-bit integer types." "$LINENO" 5 ;; #(
+ *) :
+ ;;
+esac
+ac_fn_c_check_decl "$LINENO" "isascii" "ac_cv_have_decl_isascii" "#include <ctype.h>
+"
+if test "x$ac_cv_have_decl_isascii" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISASCII $ac_have_decl
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim" "ac_cv_member_struct_stat_st_mtim" "$ac_includes_default"
+if test "x$ac_cv_member_struct_stat_st_mtim" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_MTIM 1
+_ACEOF
+
+
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdbool_h=yes
+else
+ ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+for ac_header in stdalign.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "stdalign.h" "ac_cv_header_stdalign_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdalign_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STDALIGN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are at least two -arch flags with different values.
+ ac_arch=
+ ac_prev=
+ for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+ if test -n "$ac_prev"; then
+ case $ac_word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+ ac_arch=$ac_word
+ else
+ ac_cv_c_bigendian=universal
+ break
+ fi
+ ;;
+ esac
+ ac_prev=
+ elif test "x$ac_word" = "x-arch"; then
+ ac_prev=arch
+ fi
+ done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+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
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+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
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then :
+ # Try to guess by grepping values from an object file.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_bigendian=no
+else
+ ac_cv_c_bigendian=yes
+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_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+ yes)
+ $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+ no)
+ ;; #(
+ universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+ ;; #(
+ *)
+ as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+
+GREGORIO_TREE=gregorio-4.0.0-beta2
+
+PERL5='/usr/bin/env perl'
+
+
+kpse_save_CPPFLAGS=$CPPFLAGS
+kpse_save_LIBS=$LIBS
+
+## _KPSE_INIT: Initialize TL infrastructure
+kpse_BLD=`(cd "./../../." && pwd)`
+kpse_SRC=`(cd "$srcdir/../../." && pwd)`
+
+## _KPSE_USE_LIBTOOL: Generate a libtool script for use in configure tests
+: ${CONFIG_LT=./config.lt}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5
+$as_echo "$as_me: creating $CONFIG_LT" >&6;}
+as_write_fail=0
+cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>"$CONFIG_LT" <<\_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_LT" script. ##
+## --------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x "$CONFIG_LT"
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+
+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="\
+ChkTeX (TeX Live) config.lt 4.0.0-beta2
+configured by $0, generated by GNU Autoconf 2.69.
+
+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=: ;;
+
+ -*) as_fn_error $? "unrecognized option: $1
+Try '$0 --help' for more information." "$LINENO" 5 ;;
+
+ *) as_fn_error $? "unrecognized argument: $1
+Try '$0 --help' for more information." "$LINENO" 5 ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec 6>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+
+
+# 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"`'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $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"`'
+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"`'
+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_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"`'
+
+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 AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+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_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; 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; 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'
+
+
+
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5
+$as_echo "$as_me: creating $ofile" >&6;}
+
+
+ # 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
+# 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.
+
+# 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=''
+
+# 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
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# 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
+
+# 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
+
+# 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 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
+
+# ### 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"
+
+
+as_fn_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 5>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec 5>>config.log
+$lt_cl_success || as_fn_exit 1
+
+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_link="./libtool --mode=link --tag=CC $ac_link"
+
+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_prog_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$PKG_CONFIG"; then
+ ac_cv_prog_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="${ac_tool_prefix}pkg-config"
+ $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
+PKG_CONFIG=$ac_cv_prog_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_prog_PKG_CONFIG"; then
+ ac_ct_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_prog_ac_ct_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_PKG_CONFIG"; then
+ ac_cv_prog_ac_ct_PKG_CONFIG="$ac_ct_PKG_CONFIG" # 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_PKG_CONFIG="pkg-config"
+ $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_PKG_CONFIG=$ac_cv_prog_ac_ct_PKG_CONFIG
+if test -n "$ac_ct_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PKG_CONFIG" >&5
+$as_echo "$ac_ct_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_PKG_CONFIG" = x; then
+ PKG_CONFIG="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
+ PKG_CONFIG=$ac_ct_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_prog_PKG_CONFIG"
+fi
+
+## _KPSE_LIB_FLAGS: Setup kpathsea (-lkpathsea) flags
+
+# Check whether --with-system-kpathsea was given.
+if test "${with_system_kpathsea+set}" = set; then :
+ withval=$with_system_kpathsea;
+fi
+if test "x$with_system_kpathsea" = xyes; then
+ if $PKG_CONFIG kpathsea; then
+ KPATHSEA_INCLUDES=`$PKG_CONFIG kpathsea --cflags`
+ KPATHSEA_LIBS=`$PKG_CONFIG kpathsea --libs`
+elif test "x$need_kpathsea:$with_system_kpathsea" = xyes:yes; then
+ as_fn_error $? "did not find kpathsea" "$LINENO" 5
+fi
+else
+ KPATHSEA_INCLUDES="-I$kpse_BLD/texk -I$kpse_SRC/texk"
+ KPATHSEA_LIBS="$kpse_BLD/texk/kpathsea/libkpathsea.la"
+ KPATHSEA_DEPEND='${top_builddir}/../kpathsea/libkpathsea.la'
+ KPATHSEA_RULE='# Rebuild libkpathsea
+$(KPATHSEA_DEPEND): ${top_srcdir}/../kpathsea/*.[ch] ${top_builddir}/../kpathsea/paths.h
+ cd ${top_builddir}/../kpathsea && $(MAKE) $(AM_MAKEFLAGS) rebuild
+${top_builddir}/../kpathsea/paths.h:
+ cd ${top_builddir}/../kpathsea && $(MAKE) $(AM_MAKEFLAGS) rebuild'
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libkpathsea supports debugging" >&5
+$as_echo_n "checking if libkpathsea supports debugging... " >&6; }
+if ${kpse_cv_kpse_debug+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval CPPFLAGS=\"$KPATHSEA_INCLUDES \$CPPFLAGS\"
+eval LIBS=\"$KPATHSEA_LIBS \$LIBS\"
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <kpathsea/kpathsea.h>
+int
+main ()
+{
+FILE *f = fopen("f", "r")
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ kpse_cv_kpse_debug=yes
+else
+ kpse_cv_kpse_debug=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CPPFLAGS=$kpse_save_CPPFLAGS
+LIBS=$kpse_save_LIBS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_kpse_debug" >&5
+$as_echo "$kpse_cv_kpse_debug" >&6; }
+if test "x$kpse_cv_kpse_debug" != xyes; then :
+ KPATHSEA_INCLUDES="$KPATHSEA_INCLUDES -DNO_DEBUG"
+fi
+
+
+ac_config_headers="$ac_config_headers 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 "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+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
+
+
+: "${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 ChkTeX (TeX Live) $as_me 4.0.0-beta2, 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 <tex-k@tug.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+ChkTeX (TeX Live) config.status 4.0.0-beta2
+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" 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"`'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $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"`'
+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"`'
+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_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"`'
+
+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 AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+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_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; 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; 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'
+
+ac_aux_dir='$ac_aux_dir'
+
+
+
+_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" ;;
+ "config_.h") CONFIG_HEADERS="$CONFIG_HEADERS 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 = ""
+
+}
+{
+ 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 = ""
+}
+/^[\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.
+ 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 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
+# 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.
+
+# 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=''
+
+# 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
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# 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
+
+# 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
+
+# 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 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
+
+# ### 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"
+
+ ;;
+
+ 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/Build/source/texk/gregorio/configure.ac b/Build/source/texk/gregorio/configure.ac
new file mode 100644
index 00000000000..527c4d41661
--- /dev/null
+++ b/Build/source/texk/gregorio/configure.ac
@@ -0,0 +1,40 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl Copyright (C) 2015 Peter Breitenlohner <tex-live@tug.org>
+dnl
+dnl This file is free software; the copyright holder
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl *********************************************************************
+dnl
+dnl Adapted for TeX Live from gregorio-4.0.0-beta/configure.am
+dnl
+dnl *********************************************************************
+dnl
+m4_include([version.ac])[] dnl define gregorio_version
+AC_INIT([ChkTeX (TeX Live)], gregorio_version, [tex-k@tug.org])
+AC_PREREQ([2.65])
+AC_CONFIG_SRCDIR([gregorio-]gregorio_version[/src/gregorio-utils.c])
+AC_CONFIG_AUX_DIR([../../build-aux])
+AC_CONFIG_MACRO_DIR([../../m4])
+
+dnl Common code for all programs using libkpathsea.
+KPSE_COMMON([gregorio])
+
+dnl Checks for header files.
+AC_CHECK_HEADER_STDBOOL
+AC_CHECK_HEADERS([stdalign.h])
+
+AC_C_BIGENDIAN
+
+AC_SUBST([GREGORIO_TREE], [gregorio-]gregorio_version)
+AC_SUBST([PERL5], ['/usr/bin/env perl'])
+
+KPSE_KPATHSEA_FLAGS
+
+AC_CONFIG_HEADERS([config_.h])
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/ChangeLog b/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/ChangeLog
new file mode 100644
index 00000000000..7c25687fa7c
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/ChangeLog
@@ -0,0 +1,21 @@
+2015-09-02 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import gregorio-4.0.0-beta2.
+ * patch-0[1-6]-* (removed): Included upstream.
+ * patch-10-const (new): Replace string constant by non-const
+ char array.
+
+2015-08-06 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-06-const (new): Avoid more const warnings.
+
+2015-08-04 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import gregorio-4.0.0-beta.
+ * patch-01-kpathsea (new): Use <getopt.h> or <kpathsea/getopt.h>.
+ * patch-02-warnings (new): Avoid all static, prototype, C99
+ warnings and almost all const warnings.
+ * patch-03-flex_2_5_39 (new): Avoid gcc -Wsign-compare warnings.
+ * patch-04-unsigned (new): Avoid undefined behaviour.
+ * patch-05-return_non_void (new): Avoid gcc 5.1 warning.
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/TL-Changes b/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/TL-Changes
new file mode 100644
index 00000000000..1f2f0d1d7e3
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/TL-Changes
@@ -0,0 +1,16 @@
+Changes applied to the gregorio-4.0.0-beta2 tree as obtained from:
+ https://github.com/gregorio-project/gregorio/releases/download/v4.0.0-beta2/
+
+Remove:
+ Makefile.in
+ aclocal.m4
+ build-aux/
+ configure
+ contrib/Makefile.in
+ doc/Makefile.in
+ examples/Makefile.in
+ fonts/Makefile.in
+ src/Makefile.in
+ src/config_.h.in
+ tex/Makefile.in
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/patch-10-const b/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/patch-10-const
new file mode 100644
index 00000000000..4e216037190
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2-PATCHES/patch-10-const
@@ -0,0 +1,38 @@
+ Replace string constant by non-const char array to avoid warning.
+
+diff -ur gregorio-4.0.0-beta2.orig/src/gabc/gabc-score-determination.y gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.y
+--- gregorio-4.0.0-beta2.orig/src/gabc/gabc-score-determination.y 2015-08-25 20:17:26.000000000 +0200
++++ gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.y 2015-09-02 10:45:09.000000000 +0200
+@@ -340,7 +340,8 @@
+ }
+
+ if (!got_language) {
+- gregorio_set_centering_language("Latin");
++ static char lang_Latin[] = "Latin";
++ gregorio_set_centering_language(lang_Latin);
+ }
+ }
+
+diff -ur gregorio-4.0.0-beta2.orig/src/gabc/gabc-score-determination-y.c gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.c
+--- gregorio-4.0.0-beta2.orig/src/gabc/gabc-score-determination-y.c 2015-08-26 22:44:34.000000000 +0200
++++ gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.c 2015-09-02 10:46:15.000000000 +0200
+@@ -414,7 +414,8 @@
+ }
+
+ if (!got_language) {
+- gregorio_set_centering_language("Latin");
++ static char lang_Latin[] = "Latin";
++ gregorio_set_centering_language(lang_Latin);
+ }
+ }
+
+diff -ur gregorio-4.0.0-beta2.orig/src/gabc/gabc-score-determination-y.h gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.h
+--- gregorio-4.0.0-beta2.orig/src/gabc/gabc-score-determination-y.h 2015-08-26 22:44:34.000000000 +0200
++++ gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.h 2015-09-02 10:46:15.000000000 +0200
+@@ -1,5 +1,6 @@
+ /* A Bison parser, made by GNU Bison 3.0.4. */
+
++/* Make sure this file is newer than gabc-score-determinatio.y */
+ /* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/.gregorio-version b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/.gregorio-version
new file mode 100644
index 00000000000..b3df69eb99d
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/.gregorio-version
@@ -0,0 +1,4 @@
+4.0.0-beta2
+
+*** Do not modify this file. ***
+Use VersionManager.py to change the version.
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CHANGELOG.md b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CHANGELOG.md
new file mode 100644
index 00000000000..98ec3ee35ad
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CHANGELOG.md
@@ -0,0 +1,331 @@
+# Change Log
+All notable changes to this project will be documented in this file.
+As of v3.0.0 this project adheres to [Semantic Versioning](http://semver.org/). It follows [some conventions](http://keepachangelog.com/).
+
+## [Unreleased][unreleased]
+
+
+## [4.0.0-beta2] - 2015-08-26
+### Fixed
+- Corrected the rendering of explicit automatic and manual custos at the end of lines when the clef change that follows it is pushed to the next line (see [#569](https://github.com/gregorio-project/gregorio/issues/569)).
+- Distinguished between `eolshift` and `bolshift` giving each their own flag and user commmand for turning them on and off. `\seteolshift{enable}` allows the lyric text to stretch under the custos at the end of the line. `\setbolshift{enable}` aligns the beginning of each line on the notes instead of the text. Both are on by default, but can be turned off with `\seteolshift{disable}` and `\setbolshift{disable}`.
+
+### Added
+- `\greillumination`: allows user to specify arbitrary content (usually an image) to be used as the initial.
+
+## [4.0.0-beta] - 2015-08-01
+### Fixed
+- Handling of the first syllable in gabc is now more consistent with the all other syllables. This centers the syllable correctly when using latin syllable centering (see [#42](https://github.com/gregorio-project/gregorio/issues/42)) and makes the use of styles less surprising in the first syllable (see [#135](https://github.com/gregorio-project/gregorio/issues/135)).
+- Handling of manually-placed custos is improved. In particular, a manual custos at the end of the score should no longer be lost when the bar happens to be at the end of the line.
+- Improved rendering of torculus resupinus flexus figures (see [#18](https://github.com/gregorio-project/gregorio/issues/18)).
+- Horizontal episema on the second note of a scandicus is now rendered in the correct place (see [#419](https://github.com/gregorio-project/gregorio/issues/419)).
+- The dot in a space directly above a punctum in a descending neume is now placed slightly higher in the space (see [#386](https://github.com/gregorio-project/gregorio/issues/386) and [Gna! bug 21737](https://gna.org/bugs/?21737)).
+- Choral signs are now positioned correctly around porrectus and torculus resupinus (see [#387](https://github.com/gregorio-project/gregorio/issues/387) and [Gna! bug 22025](https://gna.org/bugs/?22025)).
+- Gregorio will now try harder to select an appropriate pitch for an automatic custos (`z0`) on a clef change (see [#446](https://github.com/gregorio-project/gregorio/issues/446)). If results are not satisfactory, use a manual custos (`+`) to select a pitch manually.
+- The centering of styled text under notes is now correct (See [#509](https://github.com/gregorio-project/gregorio/issues/509)).
+- Space for above lines text is now correctly added as needed, even at the beginning of a score (see [#533](https://github.com/gregorio-project/gregorio/issues/533)).
+
+### Changed
+- A new, more systematic naming scheme has been created for GregorioTeX macros. The naming scheme should reduce the chances of naming conflicts with other packages and make it easier to identify what a particular macro is for and how to use it. Most user functions have been renamed in order to bring them into line with this scheme. Please see GregorioRef for a complete list of the new function names. In general, old names will still work, but they will raise a deprecation warning and will be dropped from GregorioTeX in a future relase.
+- The spacing algorithm has completely changed, expect your scores to look quite different (better we hope).
+- Lines are now aligned on the leftmost note instead of the leftmost letter.
+- Some glyph shapes are improved a little in greciliae, it should be noticeable especially for porrectus.
+- The `O` modifier in gabc now has expanded uses beyond the salicus `(egOi)`. A stemmed oriscus will appear on a lone pitch `(gO)` or a followed by a lower pitch `(gOe)` (see [#76](https://github.com/gregorio-project/gregorio/issues/76)). A virga strata will appear on the second note of two ascending pitches `(giO)`.
+- With thanks to *Abbazia Mater Ecclesiae (IT)* for drawing the new shapes, the strophicus, liquescent strophicus, liquescent oriscus, and liquescent punctum inclinatum in greciliae have changed to better differentiate them from other shapes. If you prefer the old shapes use:
+```
+ \grechangeglyph{Stropha}{greciliae}{.caeciliae}
+ \grechangeglyph{StrophaAucta}{greciliae}{.caeciliae}
+ \grechangeglyph{OriscusDeminutus}{greciliae}{.caeciliae}
+ \grechangeglyph{PunctumInclinatumAuctus}{greciliae}{.caeciliae}
+```
+- Default initial sizes have been chosen so that they are more appropriate when an infinitely scaling font is loaded. LaTeX will make an automatic substitution of the closest avaialble size when such a font is not used.
+- Porrectus deminutus and torculus resupinus deminutus glyphs have been updated to more closely match the current Solesmes books (see [#143](https://github.com/gregorio-project/gregorio/issues/143)). If you prefer the old forms, use:
+```
+ \grechangeglyph{Porrectus*}{*}{.alt}
+ \grechangeglyph{TorculusResupinus*}{*}{.alt}
+```
+- New (much) improved drawings for letter bars (for Versicle, Antiphon, etc.). You must fine-tune them if you use a text font other than Linux Libertine, see [UPGRADE.md](UPGRADE.md) for details.
+- The default extension `gregorio` (the executable program) will use when it produces GregorioTeX files has been changed from `.tex` to `.gtex`. Any calls to `\includescore` that use the old extension should be changed appropriately.
+- Horizontal episema improvements:
+ - A horizontal episema on the first two notes of a porrectus is now rendered differently than a horizontal episema on all three notes of a porrectus. It will no longer reach to the right side of the porrectus (see [#70](https://github.com/gregorio-project/gregorio/issues/70)).
+ - Similar to appending `0` to the `_` to force a horizontal episema to appear below a note, `1` may now be appended to the `_` to force a horizontal episema to appear above the note. These may be used simutaneously, by adding both `_0` and `_1` to the same note (see [#40](https://github.com/gregorio-project/gregorio/issues/40)).
+ - It is now possible to render a small horizontal episema. To use it, append `3` (for left-aligned), `4` (for center-aligned), or `5` (for right-aligned) to the `_` used for adding the horizontal episema in gabc (see [#40](https://github.com/gregorio-project/gregorio/issues/40)).
+ - Horizontal episema "bridging" has been made more consistent and is now possible on an episema that is below the note. (see [#389](https://github.com/gregorio-project/gregorio/issues/70)).
+ - It is now possible to suppress the automatic horizontal episema "bridging" across spaces within a syllable. To use it, append `2` to the `_` on the note before the space you do not want bridged (see [#72](https://github.com/gregorio-project/gregorio/issues/72)).
+ - A horizontal episema will no longer overlap with a vertical episema on the same note (see [#395](https://github.com/gregorio-project/gregorio/issues/395)).
+- The dot after a torculus whose last note is on a line will now appear below the line (see [#386](https://github.com/gregorio-project/gregorio/issues/386)). If you do not like the automatic placement of a dot after any note on a line (not just the torculus), you may specify a `0` or `1` after the `.` to force the dot to appear below or above the line, respectively.
+- Choral sign dimensions have been renamed (see [#387](https://github.com/gregorio-project/gregorio/issues/387)):
+ - `beforechoralsignspace` is now `beforelowchoralsignspace`.
+ - `lowchoralsignshift` is now `choralsigndownshift`.
+ - `highchoralsignshift` is now `choralsignupshift` and its sign is now inverted.
+- Style for score elements can now be changed via the `\grechangestyle` command. This replaces the mixed system of styling commands which could be redefined for some elements and specialized commands for applying styles to others. See GregorioRef for details.
+- Annotations with more than two lines are now supported (originally requested [on the user list](http://www.mail-archive.com/gregorio-users%40gna.org/msg00164.html) when two line annoations were made possible). To build the annotation box use `\greannoataion`. See GregorioRef for details.
+- The `annotation` header field in `gabc` now places its value(s) above the inital if no annotation is explicitly given by the user via `\greannotation` (see [#44](https://github.com/gregorio-project/gregorio/issues/44)).
+- `\grescaledim` now takes two arguments to bring it into line with the systemized naming scheme. The second argument should be `yes`, `true`, or `on` if you want the distance to scale when the staff size changes. Anything else will make the distance independent of the staff size.
+- Gregorio is now able to make individual lines of a score taller, when the position of the note require extra space, without affecting the rest of the lines. This is the new default behavior. See [UPGRADE.md](UPGRADE.md) and GregorioRef for details (for the change request, see [#59](https://github.com/gregorio-project/gregorio/issues/59)).
+- Braces are now rendered using MetaPost by default. This allows the line weight to remain more consistent when braces are stretched. The old behavior (which uses the score font instead) can be restored using `\gresetbracerendering{font}`. See [UPGRADE.md](UPGRADE.md) and GregorioRef for details (for the change request, see [#535](https://github.com/gregorio-project/gregorio/issues/535)).
+
+### Added
+- With thanks to Jakub Jelínek, St. Gallen style adiastematic notation is now handled through [nabc syntax](http://gregoriochant.org/dokuwiki/doku.php/language) (see GregorioNabcRef.pdf for details and [the new example](examples/FactusEst.gabc)). Only one line above the notes is currently handled. This is a preview, backward incompatible change are possible in future releases.
+- `<eu>` tag in gabc to delimit *Euouae* block in the score. It prevents linebreaking and makes spaces tighter. See [UPGRADE.md](UPGRADE.md) for details.
+- With thanks to Fr. Jacques Peron, it is now possible to embed short gabc snippets directly into a TeX document. The command is `\gabcsnippet`. See GregorioRef.pdf for full details.
+- `[ub:x:y mm]` tag, similar to `[ob:x:y mm]`, but for braces under notes.
+- `[ob:x{]` and `[ob:x}]` tag pairs for braces where the length is determined by the distance of the opening and closing tags. `[ocb:x{]` with `[ocb:x}]`, `[ocba:x{]` with `[ocba:x}]` and `[ub:x{]` with `[ub:x}]` can be used similarly for other kinds of braces and brackets.
+- The ability to substitute an arbitrary glyph for one used by GregorioTeX. This adds four macros:
+ - `\grechangeglyph` to make a score glyph substitution
+ - `\greresetglyph` to remove a score glyph substitution
+ - `\gredefsymbol` for (re-)defining an arbitrary non-score glyph that scales with the text
+ - `\gredefsizedsymbol` for (re-)defining an arbitary non-score glyph that requires a point-size to be specified.
+See GregorioRef.pdf for full details.
+- Added `--with-kpathsea` option to configure script, to check input and output file against `openout_any` and `openin_any` settings of texmf.cnf (TeXLive only). Necessary to be included in `shell_escape_commands` in TeXLive.
+- Support for `lualatex -recorder`. Autocompiled gabc and gtex files will now be properly recorded so that programs like `latexmk -recorder` can detect the need to rebuild the PDF when a gabc file changes.
+- A vertical episema may now be forced to appear above or below a note. In gabc, use `'0` for the vertical episema to appear below and `'1` for the vertical episema to appear above (see [#385](https://github.com/gregorio-project/gregorio/issues/385)).
+- The first syllable and first letter of the first syllable that is *not* interpreted as the initial of the score are now passed to macros that allow them to be styled from TeX. The first syllable is passed to `\GreFirstSyllable#1` and the first letter of the first syllable is passed to `\GreFirstSyllableInitial#1`.
+- The final line of a score may now be forced to be fully justified (rather than ragged) using `\gresetlastline{justified}` before including the score (see [#43](https://github.com/gregorio-project/gregorio/issues/43)). Use `\gresetlastline{ragged}` to switch back to a ragged last line.
+- `\gresethyphen{force}` forces GregorioTeX to put a hyphen between each syllable in a polysyllabic word. `\gresethyphen{auto}` restores behavior to normal.
+- Support for custom vowel centering rules. Put a file called `gregorio-vowels.dat` into your project directory or into a directory accessible from TEXMF and add the header `language: name;` to your gabc file. The `gregorio-vowels.dat` file describes how vowels are to be located in the *name* language. See GregorioRef for details.
+- `\gresetlinecolor` takes a named color as an argument. As a result, the red staff lines can be made consistent with the text, even when the user changes `gregoriocolor` with `\gresetlinecolor{gregoriocolor}`. Addresses [#21787 on the old tracker](https://gna.org/bugs/index.php?21787).
+- Package option `deprecated=false`. Causes all deprecated commands to raise an error and halt TeX.
+- The ability to add LilyPond-like point-and-click textedit links into the PDF file to aid with debugging scores. This must be explicitly enabled and **should be turned off** when producing files for distribution as it embeds path information into the output. To enable this, you must pass the `-p` option to gregorio when compiling gabc files and add `\gresetpointandclick{on}` before including the score. It may be toggled back off with `\gresetpointandclick{off}`. See GregorioRef for details (for the change request, see [#528](https://github.com/gregorio-project/gregorio/issues/528)).
+- New score fonts with glyphs unique to Dominican chant. These fonts replace the epiphonus and the augmented liquescents with corresponding figures from Dominican liturgical books. To use the new fonts, pass the `[op]` option to the `\gresetgregoriofont` command (i.e., `\gresetgregoriofont[op]{greciliae}`). See GregorioRef for details (for the change request, see [#1](https://github.com/gregorio-project/gregorio/issues/1)).
+- Support for "punctum cavum inclinatum" and "punctum cavum inclinatum auctus" figures. The gabc for these are `(Gr)` and `(Gr<)`, where `G` is the capitalized pitch letter.
+
+### Deprecated
+- `\GreSetStaffLinesFormat`, supplanted by `\grechangeformat{normalstafflines}...`
+- `\greinitialformat`, if you were redefining this command, use `\grechangeformat{initial}...` instead
+- `\grebiginitialformat`, if you were redefining this command, use `\grechangeformat{biginitial}...` instead
+- `\gretranslationformat`, if you were redefining this command, use `\grechangeformat{translation}...` instead
+- `\greabovelinestextstyle`, if you were redefining this command, use `\grechangeformat{abovelinestext}...` instead
+- `\grelowchoralsignstyle`, if you were redefining this command, use `\grechangeformat{lowchoralsign}...` instead
+- `\grehighchoralsignstyle`, if you were redefining this command, use `\grechangeformat{highchoralsign}...` instead
+- `centering-scheme` gabc header, supplanted by `\grelyriccentering` in TeX. See GregorioRef for syntax.
+- `\setaboveinitialseparation`, supplanted by `\grechangedim{annotationseparation}...`
+- `gregoriotex-font` gabc header, supplanted by `\gresetgregoriofont` in TeX. See GregorioRef for syntax.
+- `\scorereference`, supplanted by `\grescorereference`
+- `\GreScoreReference`, supplanted by `\grescorereference`
+- `\commentary`, supplanted by `\grecommentary`
+- `\setgretranslationcenteringscheme`, supplanted by `\gresettranslationcentering`
+- `\englishcentering`, supplanted by `\gresetlyriccentering{syllable}`
+- `\defaultcentering`, supplanted by `\gresetlyriccentering{vowel}`
+- `\setgrefactor`, supplanted by `\grechangestaffsize`
+- `\forcecompilegabc`, supplanted by `\gresetcompilegabc{force}`
+- `\autocompilegabc`, supplanted by `\gresetcompilegabc{auto}`
+- `\nevercompilegabc`, supplanted by `\gresetcompilegabc{never}`
+- `\includescore`, supplanted by `\gregorioscore`
+- `\grenoscaledim`, supplanted by `\grescaledim{...}{no}`
+- `\gresetdim`, supplanted by `\grecreatedim`
+- `\setstafflinethickness`, supplanted by `\grechangestafflinethickness`
+- `\grecoloredlines`, supplanted by `\gresetlinecolor`
+- `\greredlines` and `\redlines`, supplanted by `\gresetlinecolor{gregoriocolor}`
+- `\grenormallines` and `\normallines`, supplanted by `\gresetlinecolor{black}`
+- `\greremovelines`, supplanted by `\gresetlines{invisible}`
+- `\gredonotremovelines`, supplanted by `\gresetlines{visible}`
+- `\GreHidePCLines`, supplanted by `\gresetlinesbehindpunctumcavum{invisible}`
+- `\GreDontHidePCLines`, supplanted by `\gresetlinesbehindpunctumcavum{visible}`
+- `\GreHideAltLines`, supplanted by `\gresetlinesbehindalteration{invisible}`
+- `\GreDontHideAltLines`, supplanted by `\gresetlinesbehindalteration{visible}`
+- `\gresetnlbintranslation`, supplanted by `\gresetbreakintranslation`
+- `\greblockcustos`, supplanted by `\greseteolcustos{manual}`
+- `\greenableeolshifts`, supplanted by `\greseteolshifts{enable}`
+- `\gredisableeolshifts`, supplanted by `\greseteolshifts{disable}`
+- `\GreUseNoramalHyphen`, supplanted by `\greseteolhyphen{normal}`
+- `\GreUseZeroHyphen`, supplanted by `\greseteolhyphen{zero}`
+- `\greremoveclef`, supplanted by `\gresetclef{invisible}`
+- `\grenormalclef`, supplanted by `\gresetclef{visible}`
+- `\AddHEpisemusBridges`, supplanted by `\gresethepisemus{bridge}`
+- `\RemoveHEpisemusBridges`, supplanted by `\gresethepisemus{break}`
+- `\UseAlternatePunctumCavum`, supplanted by `\gresetpunctumcavum{alternate}`
+- `\UseNormalPunctumCavum`, supplanted by `\gresetpunctumcavum{normal}`
+- `\clivisalignmentalways`, supplanted by `\gresetclivisalignment{always}`
+- `\clivisalignmentnever`, supplanted by `\gresetclivisalignment{never}`
+- `\clivisalignmentspecial`, supplanted by `\gresetclivisalignment{special}`
+- `\greusedefaultstyle`, supplanted by `\gresetglyphsytle{default}`
+- `\greusemedicaeastyle`, supplanted by `\gresetglyphsytle{medicaea}`
+- `\greusehufnagelstyle`, supplanted by `\gresetglyphsytle{hufnagel}`
+- `\greusemensuralstyle`, supplanted by `\gresetglyphsytle{mensural}`
+- `\setspaceafterinitial`, supplanted by `\grechangedim{afterinitialshift}...`
+- `\setspacebeforeinitial`, supplanted by `\grechangedim{beforeinitialshift}...`
+- `\setinitialspacing`, supplanted by `\grechangedim{beforeinitialshift}...`, `\grechangedim{manualinitialwidth}...`, and `\grechangedime{afterinitialshift}...`
+
+
+### Removed
+- GregorioXML and OpusTeX output
+- Support for `lilypond-preamble`, `musixtex-preamble`, and `opustex-preamble` gabc headers.
+- Support for the font Gregoria.
+- Chironomy markings (gabc `u` and `U`), which were not working correctly in the first place.
+- `\Vbarsmall`, `\greletterbar`, and `\greletteraltbar`, supplanted by the new glyph system, see [UPGRADE.md](UPGRADE.md).
+- `\GreSetAboveInitialSeparation`, supplanted by `\grechangedim{annotationseparation}...`
+- `\includetexscore`, supplanted by `\gregorioscore[n]`
+- `\greincludetexscore`, supplanted by `\gregorioscore[n]`
+- `\includegabcscore`, supplanted by `\gregorioscore[f]`
+- `\greincludegabcscore`, supplanted by `\gregorioscore[f]`
+- `\GreSetSpaceBeforeInitial`, supplanted by `\grechangedim{beforeinitialshift}...`
+- `\GreSetSpaceAfterInitial`, supplanted by `\grechangedim{afterinitialshift}...`
+- `\GreSetAboveInitialSeparation`, supplanted by `\grechangedim{annotationseparation}...`
+- `\gresetstafflinefactor`, supplanted by `\grechangestafflinethickness`
+- `greg-book` and `greg-lily-book` engines, supplanted by improved capabilities of `\gregorioscore` for compiling gabc files at time of document compilation.
+
+
+
+## [3.0.3] - 2015-07-01
+### Fixed
+- Horizontal episemae on salicus figures now render correctly (See [#511](https://github.com/gregorio-project/gregorio/issues/511)).
+
+## [3.0.2] - 2015-06-01
+### Fixed
+- Prevented the default small font of the above lines text from leaking into the lyrics.
+
+## [3.0.1] - 2015-05-17
+### Fixed
+- Windows Installer is now compatible with MiKTeX. See [#355](https://github.com/gregorio-project/gregorio/issues/355).
+
+## [3.0.0] - 2015-05-14
+### Changed
+- [New website](http://gregorio-project.github.io) containing instructions only for new versions of Gregorio starting with this release, in English only.
+- New clean Mac OSX installer (intel only).
+- New incompatible format of space configuration files (`gsp-xxx.tex`). Values are now scaled to the default staff size (see [#50](https://github.com/gregorio-project/gregorio/issues/50). You now need to use `\gresetdim` for setting distances (`\somedistance = 3cm`) can no longer be used). `\gresetdim` takes three arguments: the name of the distance, the desired value, and whether the distance should scale with changes in the staff size or not. See `gsp-default.tex` for an example.
+- All distances can now be set to scale with staff size, as a consequence `\grechangedim` now takes three arguments: the name of the distance, value to change the distance to (which now supports em and ex units), and whether or not this value should be scaled with changes in the staff size. See doc/UserManual.pdf for details.
+- `\setinitalspacing` , `\setspacebeforeinitial`, `\setspaceafterinitial`, and `\setaboveinitialseparation` now take an additional argument. The new argument specifies whether the distance should scale when the staff size changes.
+- Improved `\includescore` capabilities. The `\includescore[f]` parameter has changed to `\includescore[n]` compared to version 2.4.2. See doc/UserManual.pdf for full details and UPGRADING.md for instructions on how to upgrade your score from 2.4.2.
+- Clivis stem length now follow Solesmes' books conventions (see [#31](https://github.com/gregorio-project/gregorio/issues/31)).
+- Windows TeXworks configuration script no longer adds deprecated `greg-book` and `gregorio` engines (see below).
+- `build.sh` and `install.sh` scripts are now used to build and install Gregorio with common options.
+- Clarified post installation options for Windows installer. What was the "Install Fonts" option is now labeled to indicate that this also adds GregorioTeX files to the texmf tree.
+- `\grechangedim` now checks to make sure it only operates on existing distances and doesn't create a new one.
+
+### Fixed
+- `\includescore` not finding files for autocompile under certain circumstances. (see [this thread](http://www.mail-archive.com/gregorio-users@gna.org/msg02346.html)).
+- Spacing between a syllable and a syllable with text and only a bar was too short.
+- Torculus followed by a non-liquescent note is now parsed correctly (see [#284](https://github.com/gregorio-project/gregorio/issues/284).
+- Spacing after a syllable with an flat, sharp, or natural is now correct (see [#246](https://github.com/gregorio-project/gregorio/issues/246).
+
+### Added
+- `\setstafflinethickness` controls the thickness of the staff lines. See GregorioRef.pdf for full details.
+- `\gre@debug`. Writes messages to the log file when the debug flag is set to true (can be done manually via `\debugtrue`, or via the `debug` option when loading the gregoriotex package in LaTeX).
+- New documentation in PDF: GregorioRef.pdf. You can find it in the [release files](https://github.com/gregorio-project/gregorio/releases).
+- A migration guide ([UPGRADE.md](UPGRADE.md))
+- This CHANGELOG.
+- A Windows batch file which will detect the system setup and create a report which can be useful in diagnosing installation problems. Instructions for how to use it appear [under the installation instructions for Windows on the website.](http://gregorio-project.github.io/installation-windows.html)
+
+### Deprecated
+- OpusTeX writing and GregorioXML reading and writing features will disappear in next minor release
+- The [old website](http://home.gna.org/gregorio/) contains instructions for old versions of Gregorio only, and will not be updated anymore.
+- the `-O` option
+- `\includetexscore`, supplanted by `\includescore[n]`
+- `\greincludetexscore`, supplanted by `\includescore[n]`
+- `\includegabcscore`, supplanted by `\includescore[f]`
+- `\greincludegabcscore`, supplanted by `\includescore[f]`
+- `\GreSetSpaceBeforeInitial`, supplanted by `\setspacebeforeinitial`
+- `\GreSetSpaceAfterInitial`, supplanted by `\setspaceafterinitial`
+- `\GreSetAboveInitialSeparation`, supplanted by `\setaboveinitialseparation`
+- `\gresetstafflinefactor`, supplanted by `\setstafflinethickness`
+- `greg-book` and `greg-lily-book` engines, supplanted by improved capabilities of `\includescore` for compiling gabc files at time of document compilation.
+
+## 2.4.3 - 2015-03-14 [YANKED]
+
+## 2.4.2 - 2015-02-27
+### Changed
+- Improved `\includescore` with GregorioTeX API version checking (auto-compiling when possibly breaking Gregorio update).
+- Clivis and pes quadratum alignment now follows Solesmes' conventions more closely (see [#10](https://github.com/gregorio-project/gregorio/issues/10)).
+
+### Fixed
+- Reducing horizontal episemus width.
+- Reducing flat stem length.
+- `mode` and `anotation-line` now do their job.
+- Low episemus (`_0`) under consecutive notes are now aligned correctly.
+- Quilisma was melting too much with next note when in a second interval.
+- Fixed custo blocking possibility.
+- Fixing glyphs disapearing when importing into Illustrator.
+
+### Added
+- English centering scheme now available as GregorioTeX option.
+- `\setinitialspacing` to control all spaces related to initial with one command.
+- `\gremanualinitialwidth` macro to specify width of all initials.
+- Virga aucta (for liquescent salicus), gabc `iv>`.
+- Torculus liquescent deminutus and quilisma version, gabc `dfec~` and `dwfec~`.
+- Pressus maior liquescens: `hof~`.
+- Rare form of scandicus.
+- Added `<c>` markup in gabc to denote a change of color.
+- Added `<nlba>` markup in gabc to get areas with no line breaks.
+- Possibility to center translation syllable by syllable, see [here](https://www.mail-archive.com/gregorio-users@gna.org/msg01760.html) and [here](https://www.mail-archive.com/gregorio-users@gna.org/msg01783.html).
+
+## 2.0 - 2010-09-27
+### Changed
+- gregorio API changed and GregorioTeX macros prepended with `\gre`, to avoid potential name conflicts
+- updated greciliae font
+- fine-tuning the spacing, and making it easier for users to change the defaults
+- GregorioXML reading is now optional (via `--enable-xml-read` flag)
+
+### Fixed
+- as always, fixing a lot of bugs
+
+### Added
+- Automatic Windows installer
+- adding requested features: Dominican bars, choral signs, text above staff lines
+- enabling comments in gabc files
+- adding ability to write verbatim TeX at {note, glyph, element} level
+- introducing horizontal episemus bridges
+- default output is now utf8 directly; the `-O` option allows old-style TeX output, i.e. `\char XXXX`
+- new static build system for packaged distributions
+
+
+## 1.0 - 2009-10-19
+### Changed
+- changing the number of arguments of some TeX function
+- changing the glyph names
+- improving the spacings
+- better management of the penalty in TeX so that the line changes are more consistent
+- changing the markup system in gabc to be more natural
+
+### Fixed
+- fixing a lot of bugs
+
+### Added
+- adding the possibility to put a flat after the clef
+- adding the possibility to put a custo before a clef change
+
+
+## 0.9.2 - 2008-12-27
+### Changed
+- changing the number of arguments of some TeX function
+- changing the glyph names
+
+### Fixed
+- fixing a lot of bugs
+
+### Added
+- LuaTeX additional functionalities
+
+
+## 0.9.1 - 2008-11-23
+### Changed
+- changing the number of arguments of some TeX functions
+
+### Fixed
+- fixing a lot of small bugs
+
+
+## 0.9 - 2008-07-25
+### Changed
+- stabilizing the TeX API
+
+### Added
+- adding support for Cygwin compilation
+- adding too many new features to be listed
+
+
+## 0.3 - 2008-01-18
+### Changed
+- changing the architecture of libraries and plugins
+
+### Added
+- adding support for end of lines
+- adding support for compilation on MAC OSX
+
+
+## 0.2.2 - 2007-06-14
+### Added
+- adding styles and centering in text
+
+[3.0.0-rc1]: https://github.com/gregorio-project/gregorio/compare/v2.4.2...v3.0.0-rc1
+[3.0.0-rc2]: https://github.com/gregorio-project/gregorio/compare/v3.0.0-rc1...v3.0.0-rc2
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTING.md b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTING.md
new file mode 100644
index 00000000000..25df4499442
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTING.md
@@ -0,0 +1,92 @@
+# Contributing guide for Gregorio
+
+## Reporting an issue
+
+You can report a bug and request a new feature on the [bug tracker](https://github.com/gregorio-project/gregorio/issues).
+
+Please search for existing issues before reporting a new one.
+
+Please do not use the issue tracker for personal support requests, instead use the mailing-list (https://gna.org/mail/?group=gregorio) or IRC: #gregorio on freenode.
+
+### Report a bug
+
+When you report a bug, please provide the following information:
+
+ * version of Gregorio
+ * a minimal example (gabc or gabc+tex if relevant) showing the bug
+ * a screenshot of the wrong result
+ * a precise description (if possible with a picture) of the expected output
+
+### Request feature
+
+When requesting a feature, please provide the following informations:
+
+ * a minimal example (gabc or gabc+tex) that currently doesn't work, but would
+ if the feature was done
+ * a precise description (if possible with a picture) of the expected output
+
+## Contributing code
+
+### Development environment
+
+It is not currently possible to compile Gregorio under Windows. The build requirements
+are the same under GNU/Linux and Mac OSX:
+
+ * [git](http://git-scm.com/)
+ * the [GNU Build System](http://www.gnu.org/software/automake/manual/html_node/GNU-Build-System.html#GNU-Build-System) (often referred to as "Autotools")
+ * [gcc](https://gcc.gnu.org/) (and associated tools)
+ * [GNU indent](https://www.gnu.org/software/indent/) (OSX default indent won't work)
+ * [pylint](http://www.pylint.org/) if you work on Python files
+
+### Coding standards
+
+##### C files
+
+Gregorio targets the following:
+
+ * C standard: [ISO C99 Standard](http://en.wikipedia.org/wiki/C99)
+ * compilers: [gcc](https://gcc.gnu.org/) and [clang](http://clang.llvm.org/)
+ * architectures: `i586`, `amd64`, `arm`, `arm64`
+ * under Linux, only [`glibc`](http://www.gnu.org/software/libc/)
+ * must compile under Mac OSX natively, and under [mingw32](http://www.mingw.org/) and [mingw_w64](https://sourceforge.net/projects/mingw-w64/)
+
+Specific C extensions (GNU extensions, C11, etc.) working for all the above targets are allowed on a case-by-case basis. Patches for other compilers, architectures or libraries can be accepted if they are clean, small and non-intrusive.
+
+Use indent on your code before commiting it, with the `.indent.pro` file in the repository: `indent path/to/my/file.c`.
+
+##### Other files
+
+The rest of the code uses two spaces for indentation of `.tex`, `.lua` and other files, and four spaces for `.py` files.
+
+Gregorio provides an [`.editorconfig` file](../.editorconfig), using an [editorconfig plugin](http://editorconfig.org/#download) for your editor will configure it automatically.
+
+Python files must output no error when inspected by `pylint`.
+
+TeX code must use LuaTeX (more than TeX + eTeX + Omega + PDFTeX) primitives as much as possible, and, when not possible, use code compiling under PlainTeX.
+
+### Tests
+
+When your changes are significant, please provide a test demonstrating the change. See [test documentation](tests/).
+
+### Documentation
+
+If your code has an impact on the user, you must add it to the [changelog file](CHANGELOG.md).
+
+You must also document it in the right places:
+
+ * [User manual](doc/) for changes in GregorioTeX
+ * the [website](http://gregorio-project.github.io/) (in [another repository](https://github.com/gregorio-project/gregorio-project.github.io)) if relevant.
+
+### Git Workflow
+
+The Gregorio team is following the [classical Github workflow](https://guides.github.com/introduction/flow/). More precisely it follows what is sometimes described as "[Gitflow Worflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)", keeping the same branch naming convention.
+
+### Make a pull request
+
+Once you are ready to contribute code:
+
+ * fork the repository and checkout your fork
+ * create a new branch for the pull request you want to make
+ * commit your changes to this new branch
+ * make a pull request from this new branch to the relevant branch (usually `develop`)
+ * the Gregorio developers will inspect and comment your pull request, and finally merge it (or not)
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTORS.md b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTORS.md
new file mode 100644
index 00000000000..586d97762b4
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/CONTRIBUTORS.md
@@ -0,0 +1,46 @@
+## Authors
+
+Gregorio is developed by:
+
+ * [Elie Roux](mailto:elie.roux@telecom-bretagne.eu)
+ * [Olivier Berten](mailto:olivier.berten@gmail.com)
+ * [Henry So Jr](mailto:henryso@panix.com)
+ * [Br. Samuel Springuel](mailto:rpspringuel@gmail.com)
+ * [Br. Elijah Schwab](mailto:elijahschwab@gmail.com)
+ * [Jakub Jelínek](mailto:jakub@redhat.com)
+ * [Br. Gabriel-Marie](mailto:brgabriel@sspx.com)
+
+The following people also contributed in the past:
+
+ * [Jérémie Corbier](mailto:jeremie.corbier@telecom-bretagne.eu)
+ * [Tracy Llenos](mailto:tllenos@gmail.com)
+
+## Thanks
+
+Gregorio has been developed with valuable help and support from:
+
+ * Yannis Haralambous
+ * [The Abbey Ste Madeleine du Barroux (FR)](http://www.barroux.org/)
+ * [The Monastery of St Benedict in Norcia (IT)](http://osbnorcia.org/)
+ * Matthew Spencer (author of [Caeciliae](http://marello.org/caeciliae/))
+ * Juergen Reuter (author of Parmesan font from [Lilypond](http://www.lilypond.org/index.html))
+ * Nicolas Aupetit
+ * Bertrand Grelot
+ * Patrick Roux
+ * Fr. Jacques Peron
+ * Br. Innocent Smith
+ * [Illuminare Publications](https://www.illuminarepublications.com/)
+ * Richard Chonak
+ * David Gippner
+ * Quentin Lamy
+ * [Abbazia di Praglia (IT)](http://www.praglia.it)
+ * [Abbazia Mater Ecclesiae (IT)](http://it.wikipedia.org/wiki/Abbazia_Mater_Ecclesiae)
+ * [e-codices](http://www.e-codices.unifr.ch)
+ * [Stiftsbibliothek, St. Gallen (CH)](http://www.stibi.ch/)
+ * [Stiftsbibliothek, Einsiedeln (CH)](http://kloster-einsiedeln.ch/)
+ * [Gna!](http://gna.org)
+ * [Github](https://github.com/)
+
+## Acknowledgments
+
+ * The SHA-1 digest code comes from [GNU coreutils](http://www.gnu.org/software/coreutils/coreutils.html) and has been adapted to suit Gregorio as permitted by the GPL, version 3 or later. Our copyright has been added to theirs in the appropriate source files.
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/COPYING.md b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/COPYING.md
new file mode 100644
index 00000000000..e4e2580e978
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/COPYING.md
@@ -0,0 +1,698 @@
+#License of Gregorio
+
+The program Gregorio is (C) 2007-2015 The Gregorio project, see
+[CONTRIBUTORS.md](CONTRIBUTORS.md) for authors. It is distributed under
+the GPLv3 license, printed below.
+
+The GPLv3 license applies to all files in the Gregorio sources and
+repository, except:
+
+- the *greciliae* font (C) 2007 Matthew Spencer, under the
+ [SIL Open Font
+ License](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL)
+- the other fonts, under the GPLv3 license with font exception.
+
+The font exception reads:
+
+ As a special exception, if you create a document which uses this font,
+ and embed this font or unaltered portions of this font into the document,
+ this font does not by itself cause the resulting document to be covered by
+ the GNU General Public License. This exception does not however invalidate
+ any other reasons why the document might be covered by the GNU General
+ Public License. If you modify this font, you may extend this exception
+ to your version of the font, but you are not obligated to do so. If you
+ do not wish to do so, delete this exception statement from your version.
+
+Some files in fonts/ or contrib/ have individual copyright, but are
+distributed under the GPLv3.
+
+
+GNU GENERAL PUBLIC LICENSE
+==========================
+
+*Version 3, 29 June 2007*
+
+*Copyright © 2007 Free Software Foundation, Inc. \<<http://fsf.org/>\>*
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+Preamble
+--------
+
+The GNU General Public License is a free, copyleft license for software
+and other kinds of works.
+
+The licenses for most software and other practical works are designed to
+take away your freedom to share and change the works. By contrast, the
+GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price.
+Our General Public Licenses are designed to make sure that you have the
+freedom to distribute copies of free software (and charge for them if
+you wish), that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs, and that you know you can do these things.
+
+To protect your rights, we need to prevent others from denying you these
+rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+For example, if you distribute copies of such a program, whether gratis
+or for a fee, you must pass on to the recipients the same freedoms that
+you received. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+Developers that use the GNU GPL protect your rights with two steps:
+**(1)** assert copyright on the software, and **(2)** offer you this
+License giving you legal permission to copy, distribute and/or modify
+it.
+
+For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of protecting
+users' freedom to change the software. The systematic pattern of such
+abuse occurs in the area of products for individuals to use, which is
+precisely where it is most unacceptable. Therefore, we have designed
+this version of the GPL to prohibit the practice for those products. If
+such problems arise substantially in other domains, we stand ready to
+extend this provision to those domains in future versions of the GPL, as
+needed to protect the freedom of users.
+
+Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS
+--------------------
+
+### 0. Definitions.
+
+“This License” refers to version 3 of the GNU General Public License.
+
+“Copyright” also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+“The Program” refers to any copyrightable work licensed under this
+License. Each licensee is addressed as “you”. “Licensees” and
+“recipients” may be individuals or organizations.
+
+To “modify” a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a “modified version” of the
+earlier work or a work “based on” the earlier work.
+
+A “covered work” means either the unmodified Program or a work based on
+the Program.
+
+To “propagate” a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+To “convey” a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+An interactive user interface displays “Appropriate Legal Notices” to
+the extent that it includes a convenient and prominently visible feature
+that **(1)** displays an appropriate copyright notice, and **(2)** tells
+the user that there is no warranty for the work (except to the extent
+that warranties are provided), that licensees may convey the work under
+this License, and how to view a copy of this License. If the interface
+presents a list of user commands or options, such as a menu, a prominent
+item in the list meets this criterion.
+
+### 1. Source Code.
+
+The “source code” for a work means the preferred form of the work for
+making modifications to it. “Object code” means any non-source form of a
+work.
+
+A “Standard Interface” means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that is
+widely used among developers working in that language.
+
+The “System Libraries” of an executable work include anything, other
+than the work as a whole, that **(a)** is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and **(b)** serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A “Major
+Component”, in this context, means a major essential component (kernel,
+window system, and so on) of the specific operating system (if any) on
+which the executable work runs, or a compiler used to produce the work,
+or an object code interpreter used to run it.
+
+The “Corresponding Source” for a work in object code form means all the
+source code needed to generate, install, and (for an executable work)
+run the object code and to modify the work, including scripts to control
+those activities. However, it does not include the work's System
+Libraries, or general-purpose tools or generally available free programs
+which are used unmodified in performing those activities but which are
+not part of the work. For example, Corresponding Source includes
+interface definition files associated with source files for the work,
+and the source code for shared libraries and dynamically linked
+subprograms that the work is specifically designed to require, such as
+by intimate data communication or control flow between those subprograms
+and other parts of the work.
+
+The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+
+The Corresponding Source for a work in source code form is that same
+work.
+
+### 2. Basic Permissions.
+
+All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force.
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright. Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the
+conditions stated below. Sublicensing is not allowed; section 10 makes
+it unnecessary.
+
+### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article 11
+of the WIPO copyright treaty adopted on 20 December 1996, or similar
+laws prohibiting or restricting circumvention of such measures.
+
+When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to the
+covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+### 4. Conveying Verbatim Copies.
+
+You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice; keep
+intact all notices stating that this License and any non-permissive
+terms added in accord with section 7 apply to the code; keep intact all
+notices of the absence of any warranty; and give all recipients a copy
+of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey, and
+you may offer support or warranty protection for a fee.
+
+### 5. Conveying Modified Source Versions.
+
+You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the terms
+of section 4, provided that you also meet all of these conditions:
+
+- **a)** The work must carry prominent notices stating that you
+ modified it, and giving a relevant date.
+- **b)** The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section 7.
+ This requirement modifies the requirement in section 4 to “keep
+ intact all notices”.
+- **c)** You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This License
+ will therefore apply, along with any applicable section 7 additional
+ terms, to the whole of the work, and all its parts, regardless of
+ how they are packaged. This License gives no permission to license
+ the work in any other way, but it does not invalidate such
+ permission if you have separately received it.
+- **d)** If the work has interactive user interfaces, each must
+ display Appropriate Legal Notices; however, if the Program has
+ interactive interfaces that do not display Appropriate Legal
+ Notices, your work need not make them do so.
+
+A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work, and
+which are not combined with it such as to form a larger program, in or
+on a volume of a storage or distribution medium, is called an
+“aggregate” if the compilation and its resulting copyright are not used
+to limit the access or legal rights of the compilation's users beyond
+what the individual works permit. Inclusion of a covered work in an
+aggregate does not cause this License to apply to the other parts of the
+aggregate.
+
+### 6. Conveying Non-Source Forms.
+
+You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+
+- **a)** Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium customarily
+ used for software interchange.
+- **b)** Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a written
+ offer, valid for at least three years and valid for as long as you
+ offer spare parts or customer support for that product model, to
+ give anyone who possesses the object code either **(1)** a copy of
+ the Corresponding Source for all the software in the product that is
+ covered by this License, on a durable physical medium customarily
+ used for software interchange, for a price no more than your
+ reasonable cost of physically performing this conveying of source,
+ or **(2)** access to copy the Corresponding Source from a network
+ server at no charge.
+- **c)** Convey individual copies of the object code with a copy of
+ the written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+- **d)** Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party) that
+ supports equivalent copying facilities, provided you maintain clear
+ directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+- **e)** Convey the object code using peer-to-peer transmission,
+ provided you inform other peers where the object code and
+ Corresponding Source of the work are being offered to the general
+ public at no charge under subsection 6d.
+
+A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be included
+in conveying the object code work.
+
+A “User Product” is either **(1)** a “consumer product”, which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or **(2)** anything designed or sold for
+incorporation into a dwelling. In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of coverage.
+For a particular product received by a particular user, “normally used”
+refers to a typical or common use of that class of product, regardless
+of the status of the particular user or of the way in which the
+particular user actually uses, or expects or is expected to use, the
+product. A product is a consumer product regardless of whether the
+product has substantial commercial, industrial or non-consumer uses,
+unless such uses represent the only significant mode of use of the
+product.
+
+“Installation Information” for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product
+from a modified version of its Corresponding Source. The information
+must suffice to ensure that the continued functioning of the modified
+object code is in no case prevented or interfered with solely because
+modification has been made.
+
+If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied by
+the Installation Information. But this requirement does not apply if
+neither you nor any third party retains the ability to install modified
+object code on the User Product (for example, the work has been
+installed in ROM).
+
+The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+Corresponding Source conveyed, and Installation Information provided, in
+accord with this section must be in a format that is publicly documented
+(and with an implementation available to the public in source code
+form), and must require no special password or key for unpacking,
+reading or copying.
+
+### 7. Additional Terms.
+
+“Additional permissions” are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by this
+License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option remove
+any additional permissions from that copy, or from any part of it.
+(Additional permissions may be written to require their own removal in
+certain cases when you modify the work.) You may place additional
+permissions on material, added by you to a covered work, for which you
+have or can give appropriate copyright permission.
+
+Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+
+- **a)** Disclaiming warranty or limiting liability differently from
+ the terms of sections 15 and 16 of this License; or
+- **b)** Requiring preservation of specified reasonable legal notices
+ or author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+- **c)** Prohibiting misrepresentation of the origin of that material,
+ or requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+- **d)** Limiting the use for publicity purposes of names of licensors
+ or authors of the material; or
+- **e)** Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+- **f)** Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+All other non-permissive additional terms are considered “further
+restrictions” within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains a
+further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms of
+that license document, provided that the further restriction does not
+survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you must
+place, in the relevant source files, a statement of the additional terms
+that apply to those files, or a notice indicating where to find the
+applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the above
+requirements apply either way.
+
+### 8. Termination.
+
+You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated **(a)** provisionally,
+unless and until the copyright holder explicitly and finally terminates
+your license, and **(b)** permanently, if the copyright holder fails to
+notify you of the violation by some reasonable means prior to 60 days
+after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated
+permanently if the copyright holder notifies you of the violation by
+some reasonable means, this is the first time you have received notice
+of violation of this License (for any work) from that copyright holder,
+and you cure the violation prior to 30 days after your receipt of the
+notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+### 9. Acceptance Not Required for Having Copies.
+
+You are not required to accept this License in order to receive or run a
+copy of the Program. Ancillary propagation of a covered work occurring
+solely as a consequence of using peer-to-peer transmission to receive a
+copy likewise does not require acceptance. However, nothing other than
+this License grants you permission to propagate or modify any covered
+work. These actions infringe copyright if you do not accept this
+License. Therefore, by modifying or propagating a covered work, you
+indicate your acceptance of this License to do so.
+
+### 10. Automatic Licensing of Downstream Recipients.
+
+Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+An “entity transaction” is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered work
+results from an entity transaction, each party to that transaction who
+receives a copy of the work also receives whatever licenses to the work
+the party's predecessor in interest had or could give under the previous
+paragraph, plus a right to possession of the Corresponding Source of the
+work from the predecessor in interest, if the predecessor has it or can
+get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may not
+impose a license fee, royalty, or other charge for exercise of rights
+granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that any
+patent claim is infringed by making, using, selling, offering for sale,
+or importing the Program or any portion of it.
+
+### 11. Patents.
+
+A “contributor” is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The work
+thus licensed is called the contributor's “contributor version”.
+
+A contributor's “essential patent claims” are all patent claims owned or
+controlled by the contributor, whether already acquired or hereafter
+acquired, that would be infringed by some manner, permitted by this
+License, of making, using, or selling its contributor version, but do
+not include claims that would be infringed only as a consequence of
+further modification of the contributor version. For purposes of this
+definition, “control” includes the right to grant patent sublicenses in
+a manner consistent with the requirements of this License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to make,
+use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+In the following three paragraphs, a “patent license” is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To “grant” such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license, and
+the Corresponding Source of the work is not available for anyone to
+copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either **(1)** cause the Corresponding Source to be so
+available, or **(2)** arrange to deprive yourself of the benefit of the
+patent license for this particular work, or **(3)** arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. “Knowingly relying” means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify or
+convey a specific copy of the covered work, then the patent license you
+grant is automatically extended to all recipients of the covered work
+and works based on it.
+
+A patent license is “discriminatory” if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License. You may not convey a covered work if you are
+a party to an arrangement with a third party that is in the business of
+distributing software, under which you make payment to the third party
+based on the extent of your activity of conveying the work, and under
+which the third party grants, to any of the parties who would receive
+the covered work from you, a discriminatory patent license **(a)** in
+connection with copies of the covered work conveyed by you (or copies
+made from those copies), or **(b)** primarily for and in connection with
+specific products or compilations that contain the covered work, unless
+you entered into that arrangement, or that patent license was granted,
+prior to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting any
+implied license or other defenses to infringement that may otherwise be
+available to you under applicable patent law.
+
+### 12. No Surrender of Others' Freedom.
+
+If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not convey it at all. For example, if you agree to terms that
+obligate you to collect a royalty for further conveying from those to
+whom you convey the Program, the only way you could satisfy both those
+terms and this License would be to refrain entirely from conveying the
+Program.
+
+### 13. Use with the GNU Affero General Public License.
+
+Notwithstanding any other provision of this License, you have permission
+to link or combine any covered work with a work licensed under version 3
+of the GNU Affero General Public License into a single combined work,
+and to convey the resulting work. The terms of this License will
+continue to apply to the part which is the covered work, but the special
+requirements of the GNU Affero General Public License, section 13,
+concerning interaction through a network will apply to the combination
+as such.
+
+### 14. Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies that a certain numbered version of the GNU General Public
+License “or any later version” applies to it, you have the option of
+following the terms and conditions either of that numbered version or of
+any later version published by the Free Software Foundation. If the
+Program does not specify a version number of the GNU General Public
+License, you may choose any version ever published by the Free Software
+Foundation.
+
+If the Program specifies that a proxy can decide which future versions
+of the GNU General Public License can be used, that proxy's public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+
+Later license versions may give you additional or different permissions.
+However, no additional obligations are imposed on any author or
+copyright holder as a result of your choosing to follow a later version.
+
+### 15. Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
+THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+### 16. Limitation of Liability.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
+SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
+WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+### 17. Interpretation of Sections 15 and 16.
+
+If the disclaimer of warranty and limitation of liability provided above
+cannot be given local legal effect according to their terms, reviewing
+courts shall apply local law that most closely approximates an absolute
+waiver of all civil liability in connection with the Program, unless a
+warranty or assumption of liability accompanies a copy of the Program in
+return for a fee.
+
+*END OF TERMS AND CONDITIONS*
+
+How to Apply These Terms to Your New Programs
+---------------------------------------------
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively state
+the exclusion of warranty; and each file should have at least the
+“copyright” line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program does terminal interaction, make it output a short notice
+like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type 'show c' for details.
+
+The hypothetical commands `show w` and `show c` should show the
+appropriate parts of the General Public License. Of course, your
+program's commands might be different; for a GUI interface, you would
+use an “about box”.
+
+You should also get your employer (if you work as a programmer) or
+school, if any, to sign a “copyright disclaimer” for the program, if
+necessary. For more information on this, and how to apply and follow the
+GNU GPL, see \<<http://www.gnu.org/licenses/>\>.
+
+The GNU General Public License does not permit incorporating your
+program into proprietary programs. If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library. If this is what you want to do, use the
+GNU Lesser General Public License instead of this License. But first,
+please read \<<http://www.gnu.org/philosophy/why-not-lgpl.html>\>.
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/Makefile.am b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/Makefile.am
new file mode 100644
index 00000000000..53b9ca918f3
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/Makefile.am
@@ -0,0 +1,30 @@
+# Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+#
+# This file is part of Gregorio.
+#
+# Gregorio 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.
+#
+# Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+SUBDIRS = src examples tex contrib fonts doc
+
+ACLOCAL_AMFLAGS = -I m4
+
+EXTRA_DIST = README.md CHANGELOG.md CONTRIBUTING.md CONTRIBUTORS.md \
+ UPGRADE.md COPYING.md .gregorio-version VersionManager.py \
+ build.sh install.sh install-gtex.sh
+
+fonts: make-fonts
+make-fonts:
+ make -C fonts fonts
+
+export TOP_LEVEL_MAKE = true
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/README.md b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/README.md
new file mode 100644
index 00000000000..f59a0be3b91
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/README.md
@@ -0,0 +1,37 @@
+# Gregorio
+
+Gregorio is a software application for engraving Gregorian Chant scores on a computer. Gregorio's main job is to convert a [gabc file](http://gregorio-project.github.io/gabc/index.html) (simple text representation of a score) into a [GregorioTeX file](http://gregorio-project.github.io/gregoriotex/index.html), which makes [TeX](http://gregorio-project.github.io/gregoriotex/tex.html) able to create a PDF of your score.
+
+## Usage
+
+Create a `.gabc` file representing your score (see our [tutorial](http://gregorio-project.github.io/tutorial/tutorial-gabc-01.html)), or fetch one from [the database](http://gregobase.selapa.net/).
+
+Create a [LaTeX](http://en.wikipedia.org/wiki/LaTeX) file that will produce the final pdf, and include your score. See [the example](examples/main-lualatex.tex).
+
+Compile the LaTeX file with LuaLaTeX, you get your score in PDF! You can change the LaTeX file to include other scores, create booklets, books, etc.
+
+You can also try it online [here](http://dev.illuminarepublications.com/gregorio/).
+
+## Installation
+
+You need a recent and working [TeXLive](https://www.tug.org/texlive/), on top of which you just need to install latest [Gregorio release](https://github.com/gregorio-project/gregorio/releases). See [the website](http://gregorio-project.github.io/installation.html) for more details.
+
+## Documentation
+
+You can find documentation and useful links in the [documentation](doc/), on [the main website](http://gregorio-project.github.io/) and on [a wiki](http://gregoriochant.org).
+
+## History
+
+See [CHANGELOG.md](CHANGELOG.md).
+
+## Credits
+
+See [CONTRIBUTORS.md](CONTRIBUTORS.md).
+
+## Contributing and bug reporting
+
+See [CONTRIBUTING.md](CONTRIBUTING.md).
+
+## License
+
+The code is mainly under the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license, with fonts under the [Open Font License](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL). See [complete license](COPYING.md) for more details.
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/UPGRADE.md b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/UPGRADE.md
new file mode 100644
index 00000000000..0ae4f748d56
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/UPGRADE.md
@@ -0,0 +1,175 @@
+# Upgrade Manual
+
+This file contains instructions to upgrade to a new release of Gregorio.
+
+## 4.0
+### Command Name Systemization
+
+A naming scheme for GregorioTeX commands has been established and so most commands have had their names changed in order to bring them into line with the new scheme. Some have also had their syntax changed. Briefly, user commands all now have a `\gre` prefix (to prevent name colisions with other packages) and groups of commands which altered a single setting have been replaced by a single command which takes an argument specifying the value of the setting. The notable exception to this are the two main commands: `\gregorioscore` (replaces `\includescore`) and `\gabcsnippet`. See GregorioRef for the complete list of new command names and their syntax.
+
+Old command names should still work for now, but will raise a deprecation warning which indicates the name of the correct command to use. Exceptions are noted below:
+
+- `\grescaledim`: This function now takes two arguments. The second should be `yes`, `true`, or `on` to acheive the old behavior.
+
+Additionally a new package option has been added. The option `deprecated=false` is helpful if you wish to ensure that your TeX file is compliant with the new naming system. This option causes all deprecated commands to raise an error, halting TeX, thus allowing you to actively find all deprecated commands and update them in your TeX file.
+
+### Barred letters
+
+If you use barred letters and a font other than libertine in your document, you must adjust the horizontal placement of the bar on the letter. To do so, use the `\gresimpledefbarglyph` macro. For example, use `\gresimpledefbarredsymbol{A}{0.3em}` in your preamble, tweaking the second argument to have a good result (same for R and V). If using LaTeX, you can alternately use the `\grelatexsimpledefbarredsymbol` macro, which allows control over bold and italic versions of the barred letter. See the documentation of `\gresimpledefbarredsymbol` and `\grelatexsimpledefbarredsymbol` in the PDF documentation for more details.
+
+If you were using `\Vbarsmall`, `\greletterbar`, and `\greletteraltbar`, you must use `\gresimpledefbarredsymbol` to redefine your barred letters (see PDF documentation for details).
+
+### .gtex extension
+
+The `gregorio` executable now uses the `.gtex` extension by default (instead of `.tex`, formerly) for GregorioTeX files that it produces. If you use `\includescore{file.tex}`, then you should change this to `\includescore{file.gtex}` or use the newer autocompilation feature.
+
+### Custom spacings
+
+If you are using custom spacings, please update the values of `interwordspacetext`, `intersyllablespacenotes` and `interwordspacenotes` to match their new definitions (in the comments in `gsp-default.tex`).
+
+### Euouae blocks
+
+You are advised to surround you *Euouae* blocks by the new `<eu>` tag. For instance,
+
+ E(i) u(i) o(i) u(h) a(h) e(fe..)
+
+can become
+
+ <eu>E(i) u(i) o(i) u(h) a(h) e</eu>(fe..)
+
+This will prevent line breaking, so if you were using so called *no linebreak areas* (with `{` in gabc) just for Euouae blocks, you can switch to this new tag, it will make things clearer and allow further spacing customization.
+
+### Horizontal episema improvements
+
+Changes to the way the horizontal episema is placed and "bridged" to other notes within the syllable may cause Gregorio to render things differently in the more esoteric (or bug-ridden) cases. If you are depending on the old behavior, you might need to add suffixes to the `_` in gabc to get what you want:
+
+- Add `0` to force the episema to appear below the note.
+- Add `1` to force the episema to appear above the note.
+- Add `2` to prevent Gregorio from attempting to connect this episema to the next.
+- Add `3` to use a small episema, aligned to the left of the note.
+- Add `4` to use a small episema, centered in the middle of the note.
+- Add `5` to use a small episema, aligned to the right of the note.
+
+Note: `3`, `4`, and `5` encompass a new feature and are listed here only for completeness.
+
+### Choral sign dimension renames
+
+- `beforechoralsignspace` has been renamed to `beforelowchoralsignspace`.
+- `lowchoralsignshift` has been renamed to `choralsigndownshift`.
+- `highchoralsignshift` has been renamed to `choralsignupshift` and its sign inverted.
+
+### Styling score elements
+
+Changing the styling of text elements of the score (the initial, translations, etc.) formerly required the user to redefine a command which took an argument while changing the styling of the staff lines had a command specialized to that purpose. All formats can now be changed via the `\grechangestyle` command. This command takes two or three arguments. The first argument, required, is the format to be altered. The defined formats are:
+
+- `greinitial`: normal initials
+- `grebiginitial`: big (2-line) initials
+- `translation`: translation text
+- `abovelinestext`: above lines text (`alt` in gabc)
+- `normalstafflines`: the full length staff lines
+- `additionalstafflines`: the short lines behind notes above or below the staff. This style defaults to inheriting changes to `normalstafflines`.
+- `lowchoralsign`: low choral signs
+- `highchoralsign`: high choral signs
+- `modeline`: the mode annotation above the initial if the content of the mode header in gabc is rendered.
+
+The second argument, also required, is the code necessary to turn on the styling. The third argument, optional and enclosed in square braces (`[` and `]`), is the code necessary to turn off the styling (e.g. if the code to turn on the styling contains a `\begin{environment}` then the code to turn it off must have the matching `\end{environment}`. The third argument is optional because not all styling commands have explicit off switches.
+
+While the old way of changing the styles is still supported, you should switch to this new method to future proof your scores.
+
+Examples: Let's say you previously had the following in your LaTeX document:
+
+ \renewcommand{\greabovelinetextstyle}[1]{{\small\it #1}}
+
+This would have made the text which was wrapped with `<alt></alt>` in your gabc file appear small and italicized in your score. To update this to the new system you would replace the above line with the following:
+
+ \grechangestyle{abovelinetext}{\small\it}
+
+### Centering scheme
+
+The gabc `centering-scheme` header is now deprecated and will disappear soon. Use the `\grelyriccentering` command from TeX instead. If you were using `centering-scheme: latine;` in gabc, now use `\grelyriccentering{vowel}` in the TeX file that includes the gabc. If you were using `centering-scheme: english;` in gabc, now use `\grelyriccentering{syllable}` in the TeX file that includes the gabc.
+
+Using the gabc header will, in this release, do that for you, but it will produce a deprecation warning. This header will no longer be available in the next release.
+
+### Annotations
+
+Support for annotations with an arbitrary number of lines has been added. To facilite this, the old functions which added annotations to specific lines (either the first or the second) are consolidated into a single function `\greannotation` which builds the annotations line by line. If you used the old functions for adding annotations, then you should switch out those functions for the new one.
+
+The distance associated with the annotations has also been renamed (from `aboveinitialseparation` to `annotationseparation`) and added a new one (`annotationraise`). The first still controls the spacing between the lines of the annoation. The second controls the position of the annotation relative to the score, and thus replaces the second argument in the old functions. By default, annotations are positioned so that the baseline of the first line is aligned with the top line of the staff. Positive values of `annotationraise` will push the annotation up while negative values will push it down. If you were previously using the second argument to `\gresetfirstlineaboveinitial` to adjust the spacing, you will need to convert this to call:
+
+ \grechangedim{annotationraise}{0.1cm}{1}
+
+You will need to play with the vaule of the distance a bit to acheive the desired positioning.
+
+As is normal, calls to the deprecated command names will raise a warning but still work. However there is one caveat: the old functions will always add the annotations to the bottom of the annotation list, regardless of the order in which they are called. Previously, you could call `\gresetsecondannotation` before `\gresetfirstannotation` and still have the first annotation appear on top. Which annotation appears on top is now determined by the order in which the functions are called.
+
+#### The Annotation Header
+
+The `annotation` header in gabc files now passes its value(s) to gregoriotex for placement above the inital letter of the score. Up to two `annotation` field are supported, the first for the first line above the initial, and the second field for the second line.
+
+ annotation: 1 Ant.;
+ annotation: VII a;
+
+Full TeX markup is also accepted:
+
+ annotation: {\color{red}1 Ant.};
+ annotation: {\color{red}VII a};
+
+If the user already defined annotation(s) in the main TeX file via `\greannotation` then the `annotation` header field will not overwrite that definition.
+
+#### Variable Height Line Spacing
+
+Gregorio is now able to make individual lines of a score taller, when the position of the note require extra space, without affecting the rest of the lines. This is the new default behavior. If you prefer the uniform line heights of earlier versions, use:
+
+ \gresetlineheightexpansion{uniform}
+
+Within a TeX document, you can switch back to variable line heights by using:
+
+ \gresetlineheightexpansion{variable}
+
+You can freely switch between the two behaviors within a TeX document.
+
+This new behavior requires two passes (two runs of lualatex) in order to do the calculation correctly. On the first pass, lualatex will warn you with the message
+
+ Module gregoriotex warning: Line heights or variable brace lengths may have changed. Rerun to fix.
+
+As you edit your document, lualatex will only show this warning if an extra run is required.
+
+Alternately, you can use something like latexmk to automate this activity. Instructions for using latexmk are outside the scope of this document. Please consult the latexmk documentation for more information on using it.
+
+It should also be noted that this new feature, besides requiring two passes, also imposes a small performance penalty on each pass to do the additional computation. This is negligible for small documents, but may have more noticeable impact as documents get larger.
+
+#### MetaPost brace rendering
+
+Gregorio now uses MetaPost (by default) to render braces. This allows fine-tuning to better maintain optical line weight when braces are stretched. Since the shapes are slightly different, you may prefer the old behavior, which may be restored by using:
+
+ \gresetbracerendering{font}
+
+Within a TeX document, you can switch back to MetaPost brace rendering by using:
+
+ \gresetbracerendering{metapost}
+
+You can freely switch between the two behaviors within a TeX document.
+
+## 3.0
+### TeX Live 2013
+
+Because of changes necessary to future-proof the fonts, please upgrade to at least TeX Live 2013 if you are using an older version. If the neumes do not appear or look strange in the output, you may also need to clear your LuaTeX font cache by using `luaotfload-tool --cache=erase`.
+
+### Score inclusion
+
+When migrating to this release, you should start to use the new `\includescore` system, as other ways of score inclusion are deprecated and will start disapear soon. See GregorioRef.pdf for details.
+
+#### For users of version 2.4.2
+
+In version 2.4.2, an early version of the feature to auto-compile gabc score was added. Because of the confusion this caused with old users upgrading to 2.4.2, the `\includescore` command now works in a backwards-compatible way so scores created using this command for versions of Gregorio prior than 2.4.2 should work with no change. However, for users of 2.4.2, the following changes are necessary:
+
+- If you were using `\includescore[f]`, the equivalent command is now `\includescore[n]`, but due to this change, you should be able to just use `\includescore` without the optional parameter.
+- If you were using the auto-compile feature, you should use `\autocompilegabc` in your tex file prior to using `\includescore`. This is only necessary once and **does not need to be used before each use** of `\includescore`.
+
+### Custom dimension changes
+
+If you use custom space definitions (`gsp-foo.tex`), the format have changed, and you must rewrite it completely. See the new `gsp-default.tex` for an example, and GregorioRef.pdf for documentation.
+
+### Color definition
+
+If you want to change color in gabc, using the `<c>` markup is the safest way, and you should migrate to that, as Gregorio introduced mechanisms that may break badly formatted color changes (e.g. `\color{red}foo\color{black}`).
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/VersionManager.py b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/VersionManager.py
new file mode 100755
index 00000000000..bb270c1b20c
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/VersionManager.py
@@ -0,0 +1,308 @@
+#! /usr/bin/env python2
+
+"""
+ A script that manages the VERSION of gregorio.
+
+ See VersionUpdate.py -h for help
+
+ Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+
+ This file is part of Gregorio.
+
+ Gregorio 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.
+
+ Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+"""
+
+from __future__ import print_function
+
+import sys
+import re
+import argparse
+import subprocess
+import time
+import os
+import locale
+from datetime import date
+
+from distutils.util import strtobool
+
+locale.setlocale(locale.LC_TIME, 'C')
+
+os.chdir(sys.path[0])
+
+VERSION_FILE = '.gregorio-version'
+GREGORIO_FILES = ["configure.ac",
+ "windows/gregorio-resources.rc",
+ "macosx/Gregorio.pkgproj",
+ "windows/gregorio.iss",
+ "doc/GregorioRef.tex",
+ "tex/gregoriotex.sty",
+ "tex/gregoriotex.lua",
+ "tex/gregoriotex.tex",
+ "tex/gregoriotex-chars.tex",
+ "tex/gregoriotex-signs.tex",
+ "tex/gregoriotex-spaces.tex",
+ "tex/gregoriotex-symbols.tex",
+ "tex/gregoriotex-syllable.tex",
+ "tex/gregoriotex-main.tex",
+ ]
+
+def get_parser():
+ "Return command line parser"
+ parser = argparse.ArgumentParser(
+ description='A script to manage the VERSION of gregorio.')
+ parser.add_argument('-ni', '--not-interactive',
+ help='Do not ask confirmation',
+ action='store_true', default=False)
+ parser.add_argument('-c', '--get-current',
+ help='Prints the current gregorio version',
+ action='store_true', default=False)
+ parser.add_argument('-d', '--get-debian-stable',
+ help='Prints the version for Debian stable package',
+ action='store_true', default=False)
+ parser.add_argument('-dg', '--get-debian-git',
+ help='Prints the version for Debian git package',
+ action='store_true', default=False)
+
+ modify = parser.add_mutually_exclusive_group()
+ modify.add_argument('--manual=',
+ help='Manually set the version.',
+ action='store',
+ dest='manual_version')
+ modify.add_argument('-m', '--major',
+ help='Increment the major version: x+1.0.0-beta',
+ action='store_true', default=False,
+ dest='major')
+ modify.add_argument('-e', '--enhancement',
+ help='Increment the minor version: x.y+1.0-beta',
+ action='store_true', default=False,
+ dest='minor')
+ modify.add_argument('-p', '--patch',
+ help='Increment the patch version: x.y.z+1',
+ action='store_true', default=False,
+ dest='patch')
+ modify.add_argument('-rc', '--release-candidate',
+ help='Change version to a -rc1, or increment -rcx+1',
+ action='store_true', default=False,
+ dest='release_candidate')
+ modify.add_argument('-r', '--release',
+ help='Make a release. Removes -rcx',
+ action='store_true', default=False,
+ dest='release')
+ return parser
+
+class Version(object):
+ "Class for version manipulation."
+
+ def __init__(self, versionfile):
+ self.versionfile = versionfile
+ self.version = self.read_version()
+ self.filename_version = self.filename_version_from_version(self.version)
+ self.short_tag = None
+ self.date = None
+
+ def filename_version_from_version(self, version):
+ "Return filename-compatible version"
+ return version.replace('.', '_')
+
+ def read_version(self):
+ "Return version for instance variable"
+ with open(self.versionfile, 'r') as verfile:
+ self.grever = verfile.readline()
+ return self.grever.strip('\n')
+
+ def fetch_version(self):
+ "Prints version"
+ print(self.version)
+ sys.exit(0)
+
+ def fetch_version_debian_stable(self):
+ "Prints version for Debian stable package and exits"
+ print(self.version.replace('-', '~'))
+ sys.exit(0)
+
+ def fetch_version_debian_git(self):
+ "Prints version for Debian git package and exits"
+ self.short_tag = subprocess.check_output(
+ ['git', 'rev-parse', '--short', 'HEAD'])
+ self.short_tag = self.short_tag.strip('\n')
+ self.date = time.strftime("%Y%m%d%H%M%S")
+ print("{0}+git{1}+{2}".format(self.version.replace('-', '~'),
+ self.date, self.short_tag))
+ sys.exit(0)
+
+ def update_version(self, newversion):
+ "Update self.version and .gregorio-version with the new version."
+ self.version = newversion
+ self.filename_version = self.filename_version_from_version(newversion)
+ print('Updating {0} with the new version: {1}\n'.format(
+ self.versionfile, self.version))
+ with open(self.versionfile, 'w') as verfile:
+ verfile.write(self.version)
+ verfile.write('\n\n*** Do not modify this file. ***\n')
+ verfile.write('Use VersionManager.py to change the version.\n')
+
+def replace_version(version_obj):
+ "Change version in file according to heuristics."
+ newver = version_obj.version
+ newver_filename = version_obj.filename_version
+ today = date.today()
+ print('Updating source files to version {0}\n'.format(newver))
+ for myfile in GREGORIO_FILES:
+ result = []
+ following_line_filename = False
+ with open(myfile, 'r') as infile:
+ for line in infile:
+ if 'AC_INIT([' in line:
+ result.append(re.sub(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)', newver, line, 1))
+ elif 'AppVersion' in line:
+ result.append(re.sub(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)', newver, line, 1))
+ elif 'FILENAME_VERSION' in line:
+ result.append(re.sub(r'(\d+\_\d+\_\d+(?:[-+~]\w+)*)', newver_filename, line, 1))
+ elif 'FileVersion' in line:
+ result.append(re.sub(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)', newver, line, 1))
+ elif 'ProductVersion' in line:
+ result.append(re.sub(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)', newver, line, 1))
+ elif 'GREGORIO_VERSION' in line:
+ result.append(re.sub(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)', newver, line, 1))
+ elif 'GREGORIO_DATE_LTX' in line:
+ result.append(re.sub(r'(\d+\/\d+/\d+)', today.strftime("%Y/%m/%d"), line, 1))
+ elif 'PARSE_VERSION_DATE_LTX' in line:
+ newline = re.sub(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)', newver, line, 1)
+ result.append(re.sub(r'(\d+\/\d+/\d+)', today.strftime("%Y/%m/%d"), newline, 1))
+ elif 'PARSE_VERSION_DATE' in line:
+ newline = re.sub(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)', newver, line, 1)
+ result.append(re.sub(r'([ \d]\d [A-Z][a-z]+ \d{4})', today.strftime("%e %B %Y"), newline, 1))
+ elif 'PARSE_VERSION_FILE_NEXTLINE' in line:
+ result.append(line)
+ following_line_filename = True
+ elif following_line_filename:
+ result.append(re.sub(r'(\d+\_\d+\_\d+(?:[-+~]\w+)*)', newver_filename, line, 1))
+ following_line_filename = False
+ else:
+ result.append(line)
+ with open(myfile, 'w') as outfile:
+ outfile.write(''.join(result))
+ sys.exit(0)
+
+def confirm_replace(oldver, newver):
+ "Query the user to confirm action"
+ query = 'Update version from {0} --> {1} [y/n]?'.format(oldver, newver)
+ print(query)
+ consent = None
+ while True:
+ try:
+ consent = strtobool(raw_input().lower())
+ break
+ except ValueError:
+ print('Answer with y or n.')
+ if not consent:
+ print('Aborting.')
+ sys.exit(1)
+
+def release_candidate(version_obj, not_interactive):
+ "Changes x.y.z-beta to x.y.z-rc1 OR increments x.y.z-rcx+1"
+ oldversion = version_obj.version
+ if '-rc' in oldversion:
+ newversion = re.sub(r'\d+$', lambda x: str(int(x.group()) +1),
+ oldversion)
+ elif '-' in oldversion:
+ newversion = re.sub(r'-.*', '-rc1', oldversion)
+ if (not not_interactive):
+ confirm_replace(oldversion, newversion)
+ version_obj.update_version(newversion)
+ replace_version(version_obj)
+
+def bump_major(version_obj, not_interactive):
+ "Changed the major version number: x.y.z --> x+1.0.0-beta"
+ oldversion = version_obj.version
+ nums = re.search(r'(\d+)(\.\d+)(\.\d+)', oldversion)
+ newversion = str(int(nums.group(1)) +1) + '.0.0-beta'
+ if (not not_interactive):
+ confirm_replace(oldversion, newversion)
+ version_obj.update_version(newversion)
+ replace_version(version_obj)
+
+def bump_minor(version_obj, not_interactive):
+ "Changed the minor version number: x.y.z --> x.y+1.0-beta"
+ oldversion = version_obj.version
+ nums = re.search(r'(\d+\.)(\d+)(\.\d+)', oldversion)
+ newversion = nums.group(1) + str(int(nums.group(2)) +1) + '.0-beta'
+ if (not not_interactive):
+ confirm_replace(oldversion, newversion)
+ version_obj.update_version(newversion)
+ replace_version(version_obj)
+
+def bump_patch(version_obj, not_interactive):
+ "Changed the patch version number: x.y.z --> x.y.z+1"
+ oldversion = version_obj.version
+ nums = re.search(r'(\d+\.\d+\.)(\d+)', oldversion)
+ newversion = nums.group(1) + str(int(nums.group(2)) +1)
+ if (not not_interactive):
+ confirm_replace(oldversion, newversion)
+ version_obj.update_version(newversion)
+ replace_version(version_obj)
+
+def set_manual_version(version_obj, user_version, not_interactive):
+ "Changed the version number to a user supplied value"
+ oldversion = version_obj.version
+ if not re.match(r'(\d+\.\d+\.\d+(?:[-+~]\w+)*)$', user_version):
+ print('Bad version string. Use this style: x.y.z or x.y.z-beta')
+ sys.exit(1)
+ newversion = user_version
+ if (not not_interactive):
+ confirm_replace(oldversion, newversion)
+ version_obj.update_version(newversion)
+ replace_version(version_obj)
+
+def do_release(version_obj, not_interactive):
+ "Strips extra characters from the version leaving x.y.z"
+ oldversion = version_obj.version
+ newversion = re.sub(r'([\d.]+)-?.*', r'\1', oldversion)
+ if (not not_interactive):
+ confirm_replace(oldversion, newversion)
+ version_obj.update_version(newversion)
+ replace_version(version_obj)
+
+def main():
+ "Main function"
+ parser = get_parser()
+ if len(sys.argv) == 1:
+ parser.print_help()
+ sys.exit(1)
+ args = parser.parse_args()
+ gregorio_version = Version(VERSION_FILE)
+ not_interactive = False
+ if args.not_interactive:
+ not_interactive = True
+ if args.get_current:
+ gregorio_version.fetch_version()
+ elif args.get_debian_stable:
+ gregorio_version.fetch_version_debian_stable()
+ elif args.get_debian_git:
+ gregorio_version.fetch_version_debian_git()
+ elif args.major:
+ bump_major(gregorio_version, not_interactive)
+ elif args.minor:
+ bump_minor(gregorio_version, not_interactive)
+ elif args.patch:
+ bump_patch(gregorio_version, not_interactive)
+ elif args.release_candidate:
+ release_candidate(gregorio_version, not_interactive)
+ elif args.release:
+ do_release(gregorio_version, not_interactive)
+ elif args.manual_version:
+ set_manual_version(gregorio_version, args.manual_version, not_interactive)
+
+if __name__ == "__main__":
+ main()
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/build.sh b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/build.sh
new file mode 100755
index 00000000000..9625bc85ec3
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/build.sh
@@ -0,0 +1,145 @@
+#!/usr/bin/env bash
+#
+# Public Domain
+#
+# new script to build gregorio binaries (inspired from LuaTeX's one).
+# ----------
+# Options:
+# --mingw : crosscompile for mingw32 from i-386linux
+# --warn : enables all sorts of warnings
+# --host= : target system for mingw32 cross-compilation
+# --build= : build system for mingw32 cross-compilation
+# --arch= : crosscompile for ARCH on OS X
+# --jobs= : the number of jobs to run simultaneously in the make step
+# --force= : force autoreconf or font building
+# {other) : anything else is passed to configure verbatim
+
+# try to find bash, in case the standard shell is not capable of
+# handling the generated configure's += variable assignments
+if which bash >/dev/null
+then
+ CONFIG_SHELL=`which bash`
+ export CONFIG_SHELL
+fi
+
+WARNINGS=yes
+MINGWCROSS=FALSE
+CONFHOST=
+CONFBUILD=
+MACCROSS=FALSE
+MAKEOPTS=
+OTHERARGS=
+FORCE_AUTORECONF=
+FORCE_FONTS=
+
+CFLAGS="$CFLAGS -Wdeclaration-after-statement"
+
+until [ -z "$1" ]; do
+ case "$1" in
+ --mingw ) MINGWCROSS=TRUE ;;
+ --warn ) WARN=TRUE ;;
+ --host=* ) CONFHOST="$1" ;;
+ --build=* ) CONFBUILD="$1" ;;
+ --arch=* ) MACCROSS=TRUE; ARCH=`echo $1 | sed 's/--arch=\(.*\)/\1/' ` ;;
+ -j*|--jobs=*) MAKEOPTS="$MAKEOPTS $1" ;;
+ --force=autoreconf) FORCE_AUTORECONF=TRUE ;;
+ --force=fonts) FORCE_FONTS=TRUE ;;
+ * ) OTHERARGS="$OTHERARGS $1" ;;
+ esac
+ shift
+done
+
+B=build
+
+ARCHFLAGS=
+
+if [ "$WARN" = "TRUE" ]
+then
+ CFLAGS="-Wall -Wextra \
+ -Wformat-y2k -Wno-format-extra-args\
+ -Wno-format-zero-length -Wformat-nonliteral\
+ -Wformat-security -Wformat=2 -Wnormalized=nfc $CFLAGS"
+fi
+
+if [ "$MINGWCROSS" = "TRUE" ]
+then
+ MINGWBUILD=$HOSTTYPE-$OSTYPE
+ MINGWSTR=mingw32
+ if [ -d /usr/mingw32 ]; then
+ MINGWSTR=mingw32
+ else
+ if [ -d /usr/i386-mingw32msvc ]; then
+ MINGWSTR=i386-mingw32msvc
+ else
+ if [ -d /usr/i586-mingw32msvc ]; then
+ MINGWSTR=i586-mingw32msvc
+ fi
+ fi
+ fi
+ OLDPATH=$PATH
+ PATH=/usr/$MINGWSTR/bin:$PATH
+ CFLAGS="-mtune=pentiumpro -msse2 -O2 $CFLAGS"
+ LDFLAGS="-Wl,--large-address-aware $CFLAGS"
+ ARCHFLAGS="--target=\"$MINGWSTR\" \
+ --with-gnu-ld \
+ --host=$MINGWSTR \
+ --build=$MINGWBUILD \
+ --prefix=/usr/$MINGWSTR"
+else
+if [ "$MACCROSS" = "TRUE" ]
+then
+ # make sure that architecture parameter is valid
+ case $ARCH in
+ i386 | x86_64 | ppc | ppc64 ) ;;
+ * ) echo "ERROR: architecture $ARCH is not supported"; exit 1;;
+ esac
+ ARCHFLAGS="$ARCHFLAGS"
+ CFLAGS="-arch $ARCH -g -O2 $CFLAGS"
+ LDFLAGS="-arch $ARCH $LDFLAGS"
+fi
+fi
+
+
+export CFLAGS LDFLAGS
+
+function die {
+ echo "Failed to $1."
+ exit 1
+}
+
+if [ "$FORCE_AUTORECONF" = "TRUE" -o ! -e Makefile.in ]
+then
+ echo "Creating build files using Autotools"
+ autoreconf -f -i || die "create build files"
+ echo
+fi
+
+CONFIGURE_ARGS="$CONFHOST $CONFBUILD $ARCHFLAGS $OTHERARGS"
+echo "Configuring build files; options: $CONFIGURE_ARGS"
+./configure $CONFIGURE_ARGS || die "configure Gregorio"
+echo
+
+echo "Building Gregorio; options:$MAKEOPTS"
+make ${MAKEOPTS} || die "build Gregorio"
+echo
+
+if [ "$FORCE_FONTS" = "TRUE" -o ! -e fonts/greciliae.ttf ]
+then
+ echo "Building fonts; options:$MAKEOPTS"
+ cd fonts
+ make ${MAKEOPTS} fonts || die "build fonts"
+ cd ..
+ echo
+fi
+
+if [ "$MINGWCROSS" = "TRUE" ]
+then
+ PATH=$OLDPATH
+fi
+
+echo "Build complete. Next, you may want to run ./install.sh to install."
+echo
+echo "Depending on installation directory, you probably need to run"
+echo "./install.sh using sudo or as root."
+
+exit 0
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/configure.ac b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/configure.ac
new file mode 100644
index 00000000000..db1a3e538d2
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/configure.ac
@@ -0,0 +1,92 @@
+dnl Gregorio
+dnl Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+dnl
+dnl This file is part of Gregorio.
+dnl
+dnl Gregorio is free software: you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation, either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl Gregorio is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+AC_INIT([gregorio],[4.0.0-beta2],[gregorio-devel@gna.org])
+FILENAME_VERSION="4_0_0-beta2"
+AC_SUBST(FILENAME_VERSION)
+MK=""
+AC_SUBST(MK)
+AC_PREREQ(2.59)
+AC_CONFIG_SRCDIR([src/gregorio-utils.c])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
+
+AM_INIT_AUTOMAKE([-Wall -Wno-portability subdir-objects foreign dist-bzip2 no-dist-gzip])
+
+AC_PROG_CC_C89
+dnl AM_PROG_CC_C_O is deprecated since Automake 1.14, to be removed in the future
+AM_PROG_CC_C_O
+AC_PROG_CPP
+AM_PROG_LEX
+AC_PROG_YACC
+AC_CHECK_TOOL([RC], [windres], [no])
+AM_CONDITIONAL([HAVE_RC], [test x$RC != xno])
+
+AX_CHECK_COMPILE_FLAG([-std=gnu89], [CFLAGS+=" -std=gnu89"])
+AX_CHECK_COMPILE_FLAG([-pedantic-errors], [CFLAGS+=" -pedantic-errors"])
+AX_CHECK_COMPILE_FLAG([-fstack-protector-strong], [CFLAGS+=" -fstack-protector-strong"])
+AX_CHECK_COMPILE_FLAG([-fPIE], [CFLAGS+=" -fPIE"])
+AX_CHECK_COMPILE_FLAG([-Wformat], [CFLAGS+=" -Wformat"])
+AX_CHECK_COMPILE_FLAG([-Werror=format-security], [CFLAGS+=" -Werror=format-security"])
+AX_CHECK_COMPILE_FLAG([-Wstrict-prototypes], [CFLAGS+=" -Wstrict-prototypes"])
+AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS+=" -Wall"])
+AX_CHECK_COMPILE_FLAG([-Wextra], [CFLAGS+=" -Wextra"])
+CPPFLAGS+=" -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 "
+AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS+=" -Wl,-z,relro"])
+AX_CHECK_LINK_FLAG([-Wl,-z,now], [LDFLAGS+=" -Wl,-z,now"])
+AX_CHECK_LINK_FLAG([-fPIE], [LDFLAGS+=" -fPIE"])
+AX_CHECK_LINK_FLAG([-pie], [LDFLAGS+=" -pie"])
+
+AC_HEADER_STDC
+
+AC_CHECK_HEADER_STDBOOL
+
+# linux has integer types in stdint.h, solaris, vms in inttypes.h
+AC_CHECK_HEADERS([stdint.h])
+AC_CHECK_HEADERS([stdalign.h])
+
+AC_DEFINE([_GNU_SOURCE], [1], [Always define this.])
+
+AC_C_BIGENDIAN
+
+AC_ARG_WITH([kpathsea], AS_HELP_STRING([--with-kpathsea], [Build with kpathsea.]))
+
+AS_IF([test "x$with_kpathsea" = "xyes"], [
+ PKG_PROG_PKG_CONFIG
+ PKG_CHECK_MODULES([KPSE], [kpathsea], AC_DEFINE([USE_KPSE], [1], [Use kpathsea]),
+ dnl if pkg-config doesn't know kpathsea, try -lkpathsea (the most common case)
+ AC_CHECK_LIB([kpathsea], [kpse_set_program_name], [
+ AC_DEFINE([USE_KPSE], [1], [Use kpathsea])
+ KPSE_LIBS=" -lkpathsea"
+ ], [
+ AC_MSG_ERROR([unable to find the kpathsea library])
+ ])
+ )
+])
+
+AC_CONFIG_HEADERS([src/config_.h])
+AC_CONFIG_FILES([
+ Makefile
+ src/Makefile
+ examples/Makefile
+ contrib/Makefile
+ doc/Makefile
+ tex/Makefile
+ fonts/Makefile
+])
+AC_OUTPUT
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/900_gregorio.xml b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/900_gregorio.xml
new file mode 100644
index 00000000000..72d9c438f28
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/900_gregorio.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<!--
+
+ XML file for using gregorio inside scribus.
+ Copyright (C) 2009 Pierre Couderc <pierre@couderc.eu>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ See the different comments in the file to change the default configuration.
+-->
+<editorsettings description="gregorio" icon="gregorio.png">
+ <!-- change the path to gregorio-scribus.lua here. -->
+ <executable command='texlua /usr/share/scribus/editorconfig/gregorio-scribus.lua "%file" "%dir"'/>
+ <imagefile extension=".pdf"/>
+ <highlighter>
+ <rule name="gabc header" regex="[a-zA-Z]+:" color="blue" minimal="true"/>
+ <rule name="gabc delimiter" regex="%%" color="green" minimal="true"/>
+ <rule name="gabc notes" regex="\([^)]*\)" color="red" minimal="true"/>
+ </highlighter>
+ <empty-frame-text>
+name: myscore;
+%%
+(c3) Pó(eh/hi)pu(h)lus(h) Si(hi)on,(hgh.)
+ </empty-frame-text>
+ <!-- you can change the basic headers there -->
+ <preamble>
+\documentclass[a4paper,$scribus_grefontsize$]{extarticle}
+\usepackage[left=0cm,top=0cm,right=0cm,bottom=0cm,nohead,nofoot]{geometry}
+\usepackage{color}
+\title{Scribus-Latex-gregorio-File}
+$scribus_additionalgreheaders$
+\usepackage{gregoriotex}
+\author{Scribus}
+\pagestyle{empty}
+\setlength{\textwidth}{$scribus_realwidth$ pt}
+\begin{document}
+$scribus_greconf$
+</preamble>
+<postamble>
+</postamble>
+ <tab type="settings">
+ <title><i18n>
+ <en>Headers</en>
+ <fr>En-tête</fr>
+ </i18n></title>
+ <list name="grefontsize" default="11pt">
+ <title><i18n>
+ <en>Fontsize:</en>
+ <de>Schriftgröße:</de>
+ <fr>Taille police :</fr>
+ <pl>Stopień pisma:</pl>
+ <ru>Кегль шрифт:</ru>
+ </i18n></title>
+ <option value="8pt">8pt</option>
+ <option value="9pt">9pt</option>
+ <option value="10pt">10pt</option>
+ <option value="11pt">11pt</option>
+ <option value="12pt">12pt</option>
+ <option value="14pt">14pt</option>
+ <option value="17pt">17pt</option>
+ <option value="20pt">20pt</option>
+ </list>
+ <text name="additionalgreheaders" type="long" default="\usepackage[utf8]{luainputenc}
+\usepackage[T1]{fontenc}
+\usepackage{times}"><i18n>
+ <en>Additional LaTeX Headers:</en>
+ <de>Zusätzliche LaTeX Header:</de>
+ <fr>En-tête LaTeX additionnel :</fr>
+ </i18n></text>
+ </tab>
+ <tab type="settings">
+ <title><i18n>
+ <en>Gregorio Options</en>
+ <fr>Conf. gregorio</fr>
+ </i18n></title>
+ <comment><i18n>
+ <en>Input here your additional gregorio-specific TeX commands.
+</en><fr>Ajoutez ici vos commandes additionelles pour GregorioTeX.
+</fr>
+ </i18n></comment>
+ <text name="greconf" type="long" default="\grechangestaffsize{17}"></text>
+ </tab>
+</editorsettings>
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/Makefile.am b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/Makefile.am
new file mode 100644
index 00000000000..c560fa63b1f
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/Makefile.am
@@ -0,0 +1,18 @@
+# Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+#
+# This file is part of Gregorio.
+#
+# Gregorio 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.
+#
+# Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+EXTRA_DIST = gprocess gabc.xml gabc.lang gabc.vim 900_gregorio.xml gregorio-scribus.lua gregorio.png gabc-syntax.plist README.md TeXShop
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/README.md b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/README.md
new file mode 100644
index 00000000000..c4e43da23f9
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/README.md
@@ -0,0 +1,60 @@
+# Third party scripts
+
+This repository contains various small scripts or modules for third-party softwares to use Gregorio.
+
+## Scribus
+
+Gregorio can be used in [Scribus](http://wiki.scribus.net/canvas/Scribus) using three files:
+
+ * `gregorio-scribus.lua`
+ * `gregorio.png`
+ * `900_gregorio.xml`
+
+To install Gregorio support in Scribus:
+
+ * copy the three files in the editorconfig folder of scribus (`/usr/share/scribus/editorconfig` under Linux, `C:\Program Files\Scribus\share\editorconfig`
+under Windows).
+ * read the comments in `900_gregorio.xml` and change some variables accordingly
+ * in Scribus:
+ * go in `File->Preferences->External Tools`
+ * click `Add` in the `Render Frames`
+ * select the file `900_gregorio.xml`
+
+After that you can insert a render frame using Gregorio, and simply
+typing gabc (`right-click->edit sources`).
+
+For more details see [the website](http://home.gna.org/gregorio/scribus).
+
+## Kde editors (Kate, Kedit)
+
+You can use `gabc.xml` for syntax highlighting in kate (and Kedit, etc.). To
+install it, copy the file in `/usr/share/apps/katepart/syntax`. This path
+may vary according to your distribution.
+
+## Gnome editors (Gedit)
+
+You can use `gabc.lang` for syntax highlighting in GtkSourceView (Gedit, etc.). To
+install it, copy the file in `/usr/share/gtksourceview-3.0/language-specs`. This path
+may vary according to your distribution.
+
+## Emacs
+
+To use gregorio in [Emacs](https://www.gnu.org/software/emacs/), see [this script](https://github.com/cajetanus/gregorio-mode.el).
+
+## Vim
+
+To get gabc syntax highlighting in [Vim](http://www.vim.org/):
+
+ * copy `gabc.vim` in `/usr/share/vim/vimcurrent/syntax`
+ * add the line `au BufNewFile,BufRead *.gabc setf gabc`
+somewhere near lines of the same type (near line 100 for example) in
+`/usr/share/vim/vimcurrent/filetype.vim`. This will autodetect the filetypes.
+
+## BBedit and TextWrangler (OSX only)
+
+To get gabc syntax highlight in [BBedit](http://www.barebones.com/products/bbedit/) or [TextWrangler](http://www.barebones.com/products/textwrangler/), copy `gabc-syntax.plist` into `~/Library/Application Support/TextWrangler/Language Modules/` and restart BBEdit or TextWrangler.
+
+## Script to process gabc score
+
+`gprocess` is a perl script to instantly compile and show the result of a gabc
+file. You can modify some variables directly into the script.
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/.DS_Store b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/.DS_Store
new file mode 100644
index 00000000000..5008ddfcf53
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/.DS_Store
Binary files differ
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/LuaLaTeX+se.engine b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/LuaLaTeX+se.engine
new file mode 100755
index 00000000000..a1fb7c72d06
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/LuaLaTeX+se.engine
@@ -0,0 +1,4 @@
+#!/bin/tcsh
+
+set path= ($path /usr/texbin /usr/local/bin)
+lualatex --shell-escape -file-line-error -synctex=1 "$1"
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/gregorio.scpt b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/gregorio.scpt
new file mode 100644
index 00000000000..36fafce2923
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/TeXShop/gregorio.scpt
@@ -0,0 +1,27 @@
+--Applescript
+-- Tracy Llenos <tllenos@gmail.com>
+-- a workaround macro for compiling Gregorio gabc files inside TeXShop
+
+set fileName to #FILEPATH#
+if fileName is equal to ""
+activate
+display dialog "Please save the file first" buttons {"OK"} default button "OK"
+return
+end if
+
+-- finds proper filenames
+-- from the Claus Gerhardt TeXShop macros
+set fileName to #NAMEPATH#
+set n to (number of characters of contents of fileName)
+set fileNamequoted to quoted form of fileName
+set baseName to do shell script "basename " & fileNamequoted
+set m to (number of characters of contents of baseName)
+set dirName to quoted form of (characters 1 thru (n - m - 1) of fileName as string)
+set gabcName to baseName & ".gabc"
+
+do shell script "cd " & dirName & ";" & "/usr/local/bin/gregorio " & gabcName
+
+tell application "TeXShop"
+activate
+end tell
+-- we return to TeXShop TODO: the option of opening the tex file?
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc-syntax.plist b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc-syntax.plist
new file mode 100644
index 00000000000..39396b46089
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc-syntax.plist
@@ -0,0 +1,82 @@
+<!--
+GABC syntax file for BBedit and TextWrangler
+Copyright Tomasz Grabowski <zzzygzak@gmail.com>, 2013
+
+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/>.
+--><plist version="1.0">
+<dict>
+<key>BBEditDocumentType</key>
+ <string>CodelessLanguageModule</string>
+<key>BBLMLanguageCode</key>
+ <string>0079</string>
+<key>BBLMLanguageCode</key>
+ <string>GABC</string>
+<key>BBLMLanguageDisplayName</key>
+ <string>Gregorio GABC</string>
+<key>BBLMSuffixMap</key>
+ <array>
+ <dict>
+ <key>BBLMIsSourceKind</key>
+ <true/>
+ <key>BBLMLanguageSuffix</key>
+ <string>.gabc</string>
+ </dict>
+ </array>
+<key>BBLMColorsSyntax</key><true/>
+<key>BBLMIsCaseSensitive</key><true/>
+<key>BBLMScansFunctions</key><false/>
+<key>BBLMSupportsTextCompletion</key><true/>
+<key>BBLMCanSpellCheckCodeRuns</key><false/>
+
+<key>BBLMPredefinedNameList</key>
+ <array>
+ <string>name</string>
+ <string>gabc-copyright</string>
+ <string>score-copyright</string>
+ <string>office-part</string>
+ <string>occasion</string>
+ <string>meter</string>
+ <string>commentary</string>
+ <string>arranger</string>
+ <string>gabc-version</string>
+ <string>author</string>
+ <string>date</string>
+ <string>manuscript</string>
+ <string>manuscript-reference</string>
+ <string>manuscript-storage-place</string>
+ <string>book</string>
+ <string>transcriber</string>
+ <string>transcription-date</string>
+ <string>gregoriotex-font</string>
+ <string>mode</string>
+ <string>initial-style</string>
+ <string>centering-scheme</string>
+ <string>user-notes</string>
+ <string>annotation</string>
+ </array>
+<key>BBLMCommentLineDefault</key><string>%</string>
+<key>Language Features</key>
+ <dict>
+ <key>Open Strings 1</key><string>(</string>
+ <key>Close Strings 1</key><string>)</string>
+ <key>Open Strings 2</key><string> &lt;</string>
+ <key>Close Strings 2</key><string>&gt; </string>
+ <key>End-of-line Ends Strings 1</key> <false/>
+ <key>Identifier and Keyword Characters</key>
+ <string>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-</string>
+ <key>Open Statement Blocks</key> <string>\</string>
+ <key>Close Statement Blocks</key> <string>}</string>
+ </dict>
+</dict>
+</plist>
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.lang b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.lang
new file mode 100644
index 00000000000..08258507fc0
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.lang
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<!--
+
+ Author: Elie Roux <elie.roux@telecom-bretagne.fr>
+ Copyright (C) 2008 Elie Roux <elie.roux@telecom-bretagne.fr>
+
+ 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/>.
+
+-->
+<language id="gabc" _name="Gabc" version="2.0" _section="Sources">
+ <metadata>
+ <property name="globs">*.gabc</property>
+ </metadata>
+ <styles>
+ <style id="attribute-name" _name="Attribute Name" map-to="def:keyword"/>
+ <style id="text" _name="Text" map-to="def:keyword"/>
+ <style id="text-markups" _name="Text Markups" map-to="def:statement"/>
+ <style id="translation" _name="Translation" map-to="def:doc-comment-element"/>
+ <style id="comment" _name="Comment" map-to="def:doc-comment-element"/>
+ <style id="notes" _name="Notes"/>
+ <style id="notes-base" _name="Basic Notes" map-to="def:constant"/>
+ <style id="alterations" _name="Alterations" map-to="def:identifier"/>
+ <style id="spaces" _name="Spaces" map-to="def:special-char"/>
+ </styles>
+ <definitions>
+ <context id="gabc">
+ <include>
+ <context id="header">
+ <include>
+ <context id="attribute-name" style-ref="attribute-name">
+ <match>[^:]+:|;</match>
+ </context>
+ </include>
+ </context>
+ <context id="score">
+ <start>%%</start>
+ <end>%%</end>
+ <include>
+ <context id="text" style-ref="text">
+ <match>[^\(\[&lt;]+</match>
+ </context>
+ <context id="comment" style-ref="comment">
+ <!--<start>%</start>
+ <end>&#x0a;</end>-->
+ <match>\%[^%]\n</match>
+ </context>
+ <context id="translation" style-ref="translation">
+ <start>\[</start>
+ <end>\]</end>
+ </context>
+ <context id="specials-symbol" style-ref="text-markups">
+ <prefix>&lt;</prefix>
+ <suffix>&gt;</suffix>
+ <keyword>v</keyword>
+ <keyword>/v</keyword>
+ <keyword>i</keyword>
+ <keyword>/i</keyword>
+ <keyword>b</keyword>
+ <keyword>/b</keyword>
+ <keyword>tt</keyword>
+ <keyword>/tt</keyword>
+ <keyword>sp</keyword>
+ <keyword>/sp</keyword>
+ </context>
+ <context id="notes" style-ref="notes">
+ <start>\(</start>
+ <end>\)</end>
+ <include>
+ <context id="notes-normal" style-ref="notes-base">
+ <match>[a-mA-M]+</match>
+ </context>
+ <context id="alterations" style-ref="alterations">
+ <match>[&gt;&lt;\~xXyYvVoOwWqQ-Ss\._'1234]+</match>
+ </context>
+ <context id="spaces" style-ref="spaces">
+ <match>[`,;!: /zZ]+</match>
+ </context>
+ </include>
+ </context>
+ </include>
+ </context>
+ </include>
+ </context>
+ </definitions>
+</language>
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.vim b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.vim
new file mode 100644
index 00000000000..654c06bab90
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.vim
@@ -0,0 +1,32 @@
+" Vim syntax file
+" Language: Gabc gregorian chant notation
+" Maintainer: Elie Roux <elie.roux@telecom-bretagne.eu>
+" Last Change: 2008 Nov 29
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match gabcAttributeName /^[^:]*:/
+syn match gabcAttributeNameb ";"
+syn match gabcTextMarkup "</\?\w>" contained
+syn match gabcTranslation "\[[^\[\(]*\]\?" contained
+syn match gabcBasicNote "[a-mA-M]" contained
+syn match gabcAlteration "[\<\>~xXyYvVoOwWqQ\-Ss\._'1234]" contained
+syn match gabcSpace "[`,;!: /zZ]" contained
+syn region gabcNotes matchgroup=gabcNote start="(" end=")" contains=gabcBasicNote,gabcAlteration,gabcSpace contained
+syn region gabcText start="%%" end="%%zz" contains=gabcNotes,gabcTextMarkup,gabcTranslation
+
+
+" Define the default highlighting.
+hi def link gabcAttributeName Comment
+hi def link gabcAttributeNameb Comment
+hi def link gabcText Comment
+hi def link gabcTextMarkup PreProc
+hi def link gabcBasicNote Statement
+hi def link gabcNote Type
+hi def link gabcAlteration Type
+hi def link gabcSpace Special
+
+let b:current_syntax = "gabc"
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.xml b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.xml
new file mode 100644
index 00000000000..e84ec8975f2
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gabc.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Elie Roux - elie.roux@telecom-bretagne.eu
+ version1.0 - 10 november 2008 -->
+<language name="GABC" version="1.10" kateversion="2.4" section="Other" extensions="*.gabc" mimetype="text/plain" casesensitive="1" author="Elie Roux (elie.roux@telecom-bretagne.eu)" license="GPL">
+ <highlighting>
+ <contexts>
+ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Attribute" context="Attribute" char=":"/>
+ <StringDetect attribute="Separation" context="Score Text" String="%%" insensitive="FALSE"/>
+ </context>
+ <context name="Attribute" attribute="Attribute" lineEndContext="#pop">
+ <DetectChar attribute="Attribute Name" context="Normal" char=";"/>
+ </context>
+ <context name="Score Text" attribute="Score Text" lineEndContext="#stay">
+ <DetectChar attribute="Notes" context="Notes" char="("/>
+ <RangeDetect attribute="Translation" context="#stay" char="[" char1="]"/>
+ <RangeDetect attribute="Text Markups" context="#stay" char="&lt;" char1="&gt;"/>
+ </context>
+ <context name="Notes" attribute="Notes" lineEndContext="#stay">
+ <DetectChar attribute="Notes" context="#pop" char=")"/>
+ <RegExpr attribute="Notes Base" context="#stay" String="[a-mA-M]+"/>
+ <RegExpr attribute="Alterations" context="#stay" String="[&gt;&lt;\~xXyYvVoOwWqQ-Ss\._'1234]+"/>
+ <RegExpr attribute="Space" context="#stay" String="[`,;!: /zZ]+"/>
+ </context>
+ </contexts>
+ <itemDatas>
+ <itemData name="Normal Text" defStyleNum="dsNormal"/>
+ <itemData name="Attribute" defStyleNum="dsNormal" italic="true"/>
+ <itemData name="Separation" defStyleNum="dsNormal" bold="true"/>
+ <itemData name="Score Text" defStyleNum="dsNormal" bold="true"/>
+ <itemData name="Text Markups" defStyleNum="dsFloat" bold="true"/>
+ <itemData name="Translation" defStyleNum="dsNormal" italic="true"/>
+ <itemData name="Notes" defStyleNum="dsNormal"/>
+ <itemData name="Notes Base" defStyleNum="dsNormal"/>
+ <itemData name="Alterations" defStyleNum="dsFloat" italic="true"/>
+ <itemData name="Space" defStyleNum="dsString" bold="true"/>
+ </itemDatas>
+ </highlighting>
+</language>
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gprocess b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gprocess
new file mode 100755
index 00000000000..91f603e4db0
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gprocess
@@ -0,0 +1,209 @@
+#!/usr/bin/perl
+
+# gprocess
+# a script for 'compiling' gregorio gabc music files
+# v0.2
+# Copyright (c) 2010 Richard Chonak <chonak@yahoo.com>
+# Changes in v0.2:
+# -- change list of PDF viewers
+# -- invoke LuaLateX instead of lamed/dvipdfm
+# -- drop use of pdftk (it's not available for my system)
+# -- use latin1 character set instead of utf8
+# -- update macro and variable names (with "gre" prefix) as needed
+# -- add 'redlines'
+# --
+#
+# v0.1
+# Copyright (C) 2008 Richard Chonak <chonak@yahoo.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 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/>.
+
+
+use strict;
+
+## USER-MODIFIABLE COMMAND PATHS
+
+# search for a PDF viewer among these file paths; take the first
+my @PDFVIEWERS = grep { -e $_ && -x $_ }
+ ("/usr/bin/kpdf","/usr/bin/okular","/usr/local/bin/acroread","/usr/bin/acroread");
+my $PDFVIEWER = $PDFVIEWERS[0];
+
+my $TEXCOMPILER = "lualatex";
+
+## END OF USER-MODIFIABLE COMMAND PATHS
+
+
+# print usage string if no command-line arg specified
+
+if ($#ARGV < 0) {
+ die "usage: $0 <gabc-file-name>\n";
+}
+
+
+my $GABCFILE = $ARGV[0];
+my $SCORENAME;
+my $ANNOTATION;
+my $REFERENCE;
+my $OFFICEPART;
+my $NAMEFOUND = 0;
+my $KEEPSEARCHING = 1;
+my $INLINE = "";
+
+
+my $SCORETEXFILE = $GABCFILE;
+$SCORETEXFILE =~ s/gabc$/tex/;
+
+my $SCOREWRAPTEX = $SCORETEXFILE;
+$SCOREWRAPTEX =~ s/.tex$/-main.tex/;
+
+#### GET THE SCORE TITLE FROM THE GABC FILE ####
+
+if ($GABCFILE =~ m#/#) {
+ die "File spec must not contain slashes: $GABCFILE\n";
+};
+
+
+open (GABC,"<".$GABCFILE) or die "No such file: $GABCFILE\n";
+while ($KEEPSEARCHING == 1 && ($INLINE = <GABC>)) {
+ if ($INLINE =~ /^name/) {
+ $SCORENAME = $INLINE;
+ $SCORENAME =~ s/^.*:\s*//;
+ $SCORENAME =~ s/\s*;\s*$//;
+ };
+ if ($INLINE =~ /^anotation/) {
+ $ANNOTATION = $INLINE;
+ $ANNOTATION =~ s/^.*:\s*//;
+ $ANNOTATION =~ s/\s*;\s*$//;
+ };
+ if ($INLINE =~ /^reference/) {
+ $REFERENCE = $INLINE;
+ $REFERENCE =~ s/^.*:\s*//;
+ $REFERENCE =~ s/\s*;\s*$//;
+ };
+ if ($INLINE =~ /^office-part/) {
+ $OFFICEPART = $INLINE;
+ $OFFICEPART =~ s/^.*:\s*//;
+ $OFFICEPART =~ s/\s*;\s*$//;
+ };
+ if ($INLINE =~ /^%%/) { $KEEPSEARCHING = 0; }
+}
+
+close (GABC);
+
+
+
+#### READ IN THE TEMPLATE ####
+
+my @TEMPLATELINES;
+
+
+@TEMPLATELINES = <DATA>;
+
+
+
+#### MAKE SUBSTITUTIONS ####
+
+&do_subst ("XXXX-SCORENAME-XXXX", $SCORENAME);
+&do_subst ("XXXX-SCORETEXFILE-XXXX", $SCORETEXFILE);
+&do_subst ("XXXX-ANNOTATION-XXXX", $ANNOTATION);
+&do_subst ("XXXX-OFFICEPART-XXXX", $OFFICEPART);
+&do_subst ("XXXX-REFERENCE-XXXX", $REFERENCE);
+
+foreach (@TEMPLATELINES){
+ s/^.*XXXX.*$//;
+};
+
+#### WRITE TEX WRAPPER FILE ####
+
+open (TEXWRAP,">".$SCOREWRAPTEX) or die "Cannot write file $SCOREWRAPTEX\n";
+print TEXWRAP @TEMPLATELINES;
+close (TEXWRAP);
+
+#### RUN GREGORIO, LATEX, AND KPDF ####
+my $PDFFILE = $SCOREWRAPTEX;
+$PDFFILE =~ s/tex$/pdf/;
+my $AUXFILE = $SCOREWRAPTEX;
+$AUXFILE =~ s/tex$/aux/;
+my $GAUXFILE = $SCOREWRAPTEX;
+$GAUXFILE =~ s/tex$/gaux/;
+
+# remove product files so that we don't accidentally view results
+# from a prior run
+unlink $SCORETEXFILE;
+unlink $PDFFILE;
+
+
+do_cmd("gregorio $GABCFILE");
+do_cmd("$TEXCOMPILER $SCOREWRAPTEX");
+unlink $AUXFILE;
+unlink $GAUXFILE;
+
+print "\n\nOutput is in $PDFFILE .\n";
+do_cmd ("$PDFVIEWER $PDFFILE");
+
+
+exit;
+
+sub do_subst {
+ my $TAG = $_[0];
+ my $VAL = $_[1];
+
+ foreach (@TEMPLATELINES) {
+ s/$TAG/$VAL/g;
+ }
+};
+
+sub do_cmd {
+ my $CMD = $_[0];
+#debugging print "Doing command: \n $CMD\n\n";
+ system ($CMD) == 0
+ or die "\n\nSystem command failed: $CMD : $?\n";
+};
+
+
+# THE LINES AFTER THIS "END" TAG ARE A TEMPLATE FOR THE TEX FILE TO BE GENERATED
+__END__
+
+\documentclass[12pt, letterpaper]{article}
+\usepackage{fullpage}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{luainputenc}
+\usepackage{palatino}
+\usepackage{gregoriotex}
+\usepackage{color}
+\usepackage{ifthen}
+\pagestyle{empty}
+\begin{document}
+\redlines
+
+\begin{center}\begin{huge}\textsc{XXXX-SCORENAME-XXXX}\end{huge}\end{center}
+
+\setspaceafterinitial{3.2mm plus 0em minus 0em}
+\setspacebeforeinitial{3.2mm plus 0em minus 0em}
+
+\def\greinitialformat#1{%
+{\fontsize{43}{43}\selectfont #1}%
+}
+
+\gresetfirstlineaboveinitial{\small \textsc{\textbf{XXXX-ANNOTATION-XXXX}}}{\small \textsc{\textbf{XXXX-ANNOTATION-XXXX}}}
+\commentary{{\small \emph{XXXX-REFERENCE-XXXX}}}
+
+\setgrefactor{17}
+\grespaceabovelines=5mm
+\includescore{XXXX-SCORETEXFILE-XXXX}
+
+\end{document}
+
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio-scribus.lua b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio-scribus.lua
new file mode 100644
index 00000000000..0bc11aa7b1c
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio-scribus.lua
@@ -0,0 +1,95 @@
+#!/usr/bin/env texlua
+--[[
+Gregorio/Scribus script.
+Copyright (C) 2010 Elie Roux <elie.roux@telecom-bretagne.eu>
+
+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/>.
+
+You must run this program with texlua, if possible under TeXLive 2010 (or later).
+This program allows gregorio to be integrated in Scribus.
+--]]
+
+require"lfs"
+
+local gregoriobin = 'gregorio'
+local lualatexbin = "lualatex"
+
+local function basename(name)
+ return name and string.match(name,"^.+[/\\](.-)$") or name
+end
+
+local f = arg[1]
+local dir = arg[2]
+local current = ""
+
+-- first we need to rebuild the arguments that are lost in pieces
+for i, a in ipairs(arg) do
+ if a:sub(1,1) == '"' then
+ if a:sub(-1,-1) == '"' then
+ current = a:sub(2, -2)
+ if not f then
+ f = current
+ else
+ dir = current
+ end
+ else
+ current = a:sub(2, -1)
+ end
+ elseif a:sub(-1,-1) == '"' then
+ current = current..' '..a:sub(1, -2)
+ if not f then
+ f = current
+ else
+ dir = current
+ end
+ current = ""
+ else
+ current = current..' '..a
+ end
+end
+
+if dir then
+ lfs.chdir(dir)
+end
+
+local pathbase = basename(f)
+
+local fd = io.open(f, "r")
+local texfile = io.open(f..".tex", "w")
+local gabcfile = io.open(f.."-score.gabc", "w")
+for l in fd:lines() do
+ if string.match(l, "^\\") then
+ texfile:write(l..'\n')
+ elseif l=="\n" then
+ else
+ gabcfile:write(l..'\n')
+ end
+end
+
+local format = string.format
+
+texfile:write(format("\n\\gregorioscore{%s-score.gtex}\n\\end{document}\n", pathbase))
+texfile:close()
+gabcfile:close()
+
+print(format("calling 'gregorio %s-score.gabc'\n", f))
+os.remove(format("%s-score.gtex", f))
+os.spawn(format("%s %s-score.gabc", gregoriobin, pathbase))
+if not lfs.isfile(format("%s-score.gtex", pathbase)) then
+ print("error: gregorio did not work as expected\n")
+ exit(1)
+end
+
+print(format("calling 'lualatex --interaction nonstopmode %s.tex'\n", pathbase))
+os.spawn(format("%s --interaction=nonstopmode %s.tex", lualatexbin, pathbase))
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio.png b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio.png
new file mode 100644
index 00000000000..d58efff6a27
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/contrib/gregorio.png
Binary files differ
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Appendix_Font_Tables.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Appendix_Font_Tables.tex
new file mode 100644
index 00000000000..d5e2c4cabbb
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Appendix_Font_Tables.tex
@@ -0,0 +1,82 @@
+% !TEX root = GregorioRef.tex
+% !TEX program = LuaLaTeX
+\begin{landscape}
+
+\section{Font Glyph Tables}\label{glyphtable}
+
+\subsection{Score Font Glyphs}
+
+The following table lists all of the score glyphs available in the greciliae,
+gregorio, and parmesan fonts, and any variant glyphs contained within. If a
+variant glyph is unavailable in a given font, it will be listed as
+{\itshape\small N/A} under the appropriate column. Some of the glyphs listed
+are representative of sets of glyphs differentiated by the ambitus of the
+component notes. These are listed with English words for the numbers in
+italics, such as {\itshape TwoTwo}. The gabc column lists a gabc sequence that
+uses the given glyph. If there are small, slanted characters, such as
+\excluded{gege} in this column, they produce glyphs additional to the given
+glyph, but are necessary for the given glyph to appear. Note: glyphs for the
+horizontal episema (activated using {\ttfamily\char`_} in gabc) are excluded from
+this table.
+
+\newcommand\ScoreFontTable[1]{%
+ \begin{longtable}{llccccccc}
+ \caption{Score Glyphs}\\
+ &&&&&\multicolumn{4}{c}{\bfseries Variants}\\
+ \hhline{>{\arrayrulecolor{lightgray}}----->{\arrayrulecolor{black}}----}
+ {\bfseries Glyph Name}&%
+ {\scriptsize\bfseries gabc}&%
+ {\scriptsize\bfseries greciliae}&%
+ {\scriptsize\bfseries gregorio}&%
+ {\scriptsize\bfseries parmesan}&%
+ {\scriptsize\bfseries Name}&%
+ {\scriptsize\bfseries greciliae}&%
+ {\scriptsize\bfseries gregorio}&%
+ {\scriptsize\bfseries parmesan}\\
+ \hline
+ \endfirsthead
+ &&&&&\multicolumn{4}{c}{\bfseries Variants}\\
+ \hhline{>{\arrayrulecolor{lightgray}}----->{\arrayrulecolor{black}}----}
+ {\bfseries Glyph Name}&%
+ {\scriptsize\bfseries gabc}&%
+ {\scriptsize\bfseries greciliae}&%
+ {\scriptsize\bfseries gregorio}&%
+ {\scriptsize\bfseries parmesan}&%
+ {\scriptsize\bfseries Name}&%
+ {\scriptsize\bfseries greciliae}&%
+ {\scriptsize\bfseries gregorio}&%
+ {\scriptsize\bfseries parmesan}\\
+ \hline
+ \endhead
+ \directlua{GregorioRef.emit_score_glyphs(#1)}
+ \end{longtable}
+}%
+\ScoreFontTable{'greciliae','gregorio','parmesan'}
+
+\subsection{Dominican Score Font Glyphs}
+
+The following table lists all of the score glyphs available in the Dominican
+versions of the greciliae, gregorio, and parmesan fonts in the same vein as
+the prior table.
+
+\ScoreFontTable{'greciliaeOp','gregorioOp','parmesanOp'}
+
+\subsection{Extra Glyphs}\label{subsec:greextra}
+
+The following table lists the glyphs available in the greextra font. There are
+score glyphs which may be substituted into the score, text glyphs meant to be
+used in the verses or in the \TeX{} document, and miscellaneous glyphs like
+decorative lines for more specialized use.
+
+\begin{longtable}{lc|lc}
+ \caption{Extra Glyphs}\\
+ {\bfseries Glyph Name}&{\bfseries Glyph}&{\bfseries Glyph Name}&{\bfseries Glyph}\\
+ \hline
+ \endfirsthead
+ {\bfseries Glyph Name}&{\bfseries Glyph}&{\bfseries Glyph Name}&{\bfseries Glyph}\\
+ \hline
+ \endhead
+ \directlua{GregorioRef.emit_extra_glyphs('greextra')}
+\end{longtable}
+
+\end{landscape}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_User.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_User.tex
new file mode 100644
index 00000000000..15d1760e935
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_User.tex
@@ -0,0 +1,1274 @@
+% !TEX root = GregorioRef.tex
+% !TEX program = LuaLaTeX+se
+\section{User Controls}
+
+These functions are available to the user to customize elements of the
+score which cannot be controlled from the gabc file. They can be added
+to any \verb=.tex= file. Do not add them to any \verb=.gtex= or
+\verb=.gabc= file.
+
+\subsection{Using the Package}
+
+To use the Gregorio\TeX\ package, include \verb=\usepackage{gregoriotex}=
+in the document preamble. This macro has the following form:
+
+\macroname{\textbackslash usepackage}{[\optional{(options)}]\{gregoriotex\}}{gregoriotex.sty}
+
+The optional arguments are:
+
+\bigskip\rowcolors{1}{lightgray}{lightgray}
+\begin{tabular}{lp{10cm plus .5cm}}
+ Argument & Description \\
+ \hline
+ debug & Debug messages will be printed to the output log. \\
+ \hline
+ nevercompile & Default. The classic behavior of Gregorio\TeX. The user is %
+ responsible for compiling gabc scores into gtex files.\\
+ autocompile & Gregorio\TeX\ will automatically compile gtex files from gabc %
+ files when necessary. If the gabc has been modified, or the %
+ gtex has an outdated version, or the gtex file does not exist, %
+ THEN Gregorio\TeX\ will compile a new gtex file.\\
+ forcecompile & Gregorio\TeX\ will compile all scores from their gabc files.\\
+ \hline
+ deprecated=false & Force all deprecated commands to raise a package error %
+ rather than a warning. This allows the user to ensure that their file is %
+ compliant with the current version of Gregorio\TeX.\\
+\end{tabular}\bigskip
+
+\textbf{Note:} \verb=nevercompile=, \verb=autocompile=, and
+\verb=forcecompile= conflict with eachother. Only one should be
+specified in the options list.\bigskip
+
+\textbf{Important:} Gregorio\TeX{} may require up to two passes (runs of
+\texttt{lualatex}) to compute the line heights correctly. If a second
+pass is required, Gregorio\TeX{} will emit the following
+warning:\par\medskip
+
+\begin{scriptsize}
+\begin{latexcode}
+Module gregoriotex warning: Line heights or variable brace lengths may have changed. Rerun to fix.
+\end{latexcode}
+\end{scriptsize}
+
+Gregorio\TeX{} two-pass processing is compatible with \texttt{latexmk}.
+
+\subsection{Commands}
+
+In general, commands should not be modified. Exceptions are noted below.
+
+\subsubsection{Including scores}
+
+\macroname{\textbackslash gregorioscore}{[\optional{\#1}]\{\#2\}}{gregoriotex-main.tex}
+Macro for including scores. Works on both gabc and tex files.
+
+\begin{argtable}
+ \#1 & \texttt{n} & Optional. \#2 will be included as is. \\
+ & \texttt{a} & Optional. Gregorio\TeX\ will automatically compile gabc files if necessary.\\
+ & \texttt{f} & Optional. Forces Gregorio\TeX\ to compile the gabc file.\\
+ \#2 & string & Relative or absolute path to the score.\\
+\end{argtable}
+
+Example:\par\medskip
+\begin{latexcode}
+ \includescore[n]{TecumPrincipium.tex}
+ \includescore{Chant/VirgoVirginum.gabc}
+ \includescore{/home/user/chant/AdTeLevavi}
+ \includescore[a]{AveMaria}
+
+ %The following lines include the same score:
+ \includescore{Christus}
+ \includescore{Christus.gtex}
+ \includescore{./Christus}
+ \includescore{./Christus.gabc}
+
+ %With the optional arg [f], #2 must be a file usable by TeX.
+ \includescore[f]{TecumPrincipium.gabc} % Wrong
+\end{latexcode}
+
+\textbf{Important:} For the sake of clarity it is recommended that the
+file extension be omitted from \texttt{\#2}. When the nevercompile
+option is in effect (either via package option
+\texttt{[nevercompile]}, or \verb=\gresetcompilegabc{never}=, or
+\verb=\includescore[n]=) \#2 must be a \TeX\ file that exists and
+\texttt{.tex} is the only extension that may be omitted.
+
+When called with the optional argument \texttt{[a]} Gregorio\TeX\ will
+automatically generate a \texttt{gtex} file in this format:
+\texttt{\textit{scorename}-x\_x\_x.gtex} where \texttt{x\_x\_x} is the
+gregorio version. This resulting file is not intended to be modified
+by the user and will be removed when the gabc file is recompiled. The
+rules that Gregorio\TeX uses to determine if a gabc file needs to be
+compiled are:
+
+\begin{itemize}
+\item If a gtex file does not exist.
+\item If the modification time of the gabc file is newer than its
+ corresponding gtex file.
+\item If the version of the gtex file is outdated.
+\end{itemize}
+
+When called with the optional argument \texttt{[n]} Gregorio\TeX\ will
+include the score without doing anything else. This is the same as the
+old behavior of Gregorio\TeX and the default behavior.
+
+When called with the optional argument \texttt{[f]} Gregorio\TeX will
+compile the gabc file into a gtex file. This is similar to
+\texttt{[a]} except the gabc is compiled every time.
+
+\macroname{\textbackslash gresetcompilegabc}{\{\#1\}}{gregoriotex-main.tex}
+A macro to change the behavior of the way Gregorio\TeX\ includes scores. This is similar to using the package options \verb=[forcecompile]=, \verb=[autocompile]=, and \verb=[nevercompile]=, but does not necessarly apply to the entire document.
+
+
+\begin{argtable}
+ \#1 & force & all later calls of \verb=\includescore= will compile the gabc
+file into a gtex file.\\
+ & auto & all later calls of \verb=\includescore= will use Gregorio\TeX's
+automatic compilation of gabc files.\\
+ & never & all later calls of \verb=\includescore= will include the score
+without doing anything else.
+\end{argtable}
+
+\medskip This macro can be combined in the same document with different arguments to
+switch between different includescore behaviors: \par\medskip
+\begin{latexcode}
+ \usepackage{gregoriotex} % [nevercompile] is the default.
+ ----
+ \includescore{TecumPrincipium} % gabc never compiled.
+ \includescore[f]{TecumPrincipium} % gabc always compiled.
+ \includescore[a]{TecumPrincipium} % gabc auto compiled.
+
+ \gresetcompilegabc{auto}
+ \includescore{TecumPrincipium} % gabc auto compiled.
+ \includescore[n]{TecumPrincipium} % gabc never compiled.
+ \includescore[f]{TecumPrincipium} % gabc always compiled.
+
+ \gresetcompilegabc{force}
+ \includescore{TecumPrincipium} % gabc always compiled.
+ \includescore[n]{TecumPrincipium} % gabc never compiled.
+ \includescore[a]{TecumPrincipium} % gabc auto compiled.
+\end{latexcode}
+
+\macroname{\textbackslash gabcsnippet}{[\optional{\#1}]\{\#2\}}{gregoriotex-main.tex}
+Converts the gabc notation specified in \texttt{\#2} to Gregorio\TeX\ and
+includes it directly in the document. The optional argument \texttt{[\#1]}
+may be used to specify a gabc \texttt{initial-style}, which defaults to
+\texttt{1}.
+
+\begin{argtable}
+ \#1 & number & Optional. The gabc \texttt{initial-style} value to use.\\
+ \#2 & string & The gabc to insert into the document.\\
+\end{argtable}
+
+\medskip For example:\par\medskip
+\begin{latexcode}
+ \gabcsnippet[0]{(c3) Al(eg~)le(gv.fhg)lu(efe___)ia(e.) (::)}
+\end{latexcode}
+
+
+\subsubsection{Point-and-click}
+
+Gregorio can add Lilypond-like point-and-click links into the output PDF
+file. The URLs added to the PDF conform with Lilypond and will use the
+Lilypond scripts if they are enabled on your system. To configure your
+system for this feature, please see the documentation for Lilypond since
+they established the feature.\bigskip
+
+In addition to switching this feature on in \TeX{}, you must also pass the
+\texttt{-p} option to \texttt{gregorio} when converting your gabc files to
+Gregorio\TeX{} for inclusion. This will automatically be done for auto- and
+force-compiled scores, but if an auto-compiled score was compiled without the
+option, Gregorio\TeX{} will not realize it has changed to recompile it. In
+this case, remove the corresponding \texttt{.gtex} file to force it to
+recompile.\bigskip
+
+\textbf{Important:} As with LilyPond, you should always turn off
+point-and-click before producing gtex and/or PDF files for distribution.
+This feature embeds absolute filenames from your computer as links in
+the PDF, which can pose a security risk. This is why this feature is
+disabled by default.
+
+\macroname{\textbackslash gresetpointandclick}{\{\#1\}}{gregoriotex-syllable.tex}
+Macro to enable or disable the point-and-click feature.
+
+\begin{argtable}
+ \#1 & on & Enable point-and-click link generation.\\
+ & off & Disable point-and-click link generation.
+\end{argtable}
+
+This feature may be switched on and off as desired between scores.
+
+
+\subsubsection{Overall Size}
+While the default size for Gregorio scores is designed to approximate that found in most liturgical books, Gregorio\TeX\ also provides mechanisms for changing the size of your scores for use in any application.
+
+\macroname{\textbackslash grechangestaffsize}{\{\#1\}}{gregoriotex-main.tex}
+Macro to adjust the size of the staff.
+
+\begin{argtable}
+ \#1 & integer & The size of the staff lines. Default value is 17. Higher numbers yield larger staves.
+\end{argtable}
+
+\macroname{\textbackslash grechangestafflinethickness}{\{\#1\}}{gregoriotex-spaces.tex}
+Macro to adjust the thickness of the staff lines.
+
+\begin{argtable}
+ \#1 & integer & The thickness of the staff lines. The default value is same as staff size.
+\end{argtable}
+
+
+\subsubsection{Fine Tuning Dimensions}
+In addition to providing control over the overall size of your scores, Gregorio\TeX\ allows you to fine tune the spacings around and between the various elements using the following functions.
+
+\macroname{\textbackslash grecreatedim}{\{\#1\}\{\#2\}\{\#3\}}{gregoriotex-spaces.tex}
+Macro to create one of Gregorio\TeX’s distances. Used to initialize distances in a space configuration file.
+
+\begin{argtable}
+ \#1 & string & The name of the distance to be changed. See \nameref{distances} below.\\
+ \#2 & string & The distance in string format. \textbf{Note:} You cannot use a length register for this argument. You \emph{must} use a string because of the way that Gregorio\TeX\ handles spaces.\\
+ \#3 & 0 & Distance will not scale when staff size is changed.\\
+ & 1 & Distance will scale when staff size is changed.
+\end{argtable}
+
+\macroname{\textbackslash grechangedim}{\{\#1\}\{\#2\}\{\#3\}}{gregoriotex-spaces.tex}
+Macro to change one of Gregorio\TeX’s distances. This function will check to make sure the distance you are trying to change exists first.
+
+\begin{argtable}
+ \#1 & string & The name of the distance to be changed. See \nameref{distances} below.\\
+ \#2 & string & The distance in string format. \textbf{Note:} You cannot use a length register for this argument. You \emph{must} use a string because of the way that Gregorio\TeX\ handles spaces.\\
+ \#3 & 0 & Distance will not scale when staff size is changed.\\
+ & 1 & Distance will scale when staff size is changed.
+\end{argtable}
+
+\macroname{\textbackslash grescaledim}{\{\#1\}\{\#2\}}{gregoriotex-spaces.tex}
+Macro to turn on or off scaling with the staff size for a particular distance.
+
+\begin{argtable}
+ \#1 & string & The name of the distance for which scaling it to changed. See \nameref{distances} below.\\
+ \#2 & \texttt{yes}/\texttt{true}/\texttt{on} & Scale the distance when changing the size of the staff.\\
+ & \textit{other} & Do not scale the distance when changing the size of the staff.
+\end{argtable}
+
+\macroname{\textbackslash greloadspaceconf}{\{\#1\}}{gregoriotex-spaces.tex}
+Macro to load a space configuration file. Space configuration file names have the format \verb=gsp-identifier.tex= and must be in the same directory as your project or in your texmf directory. This function is \texttt{gre}-prefixed to highlight that it only loads distances for Gregorio\TeX.
+
+\begin{argtable}
+ \#1 & string & The identifier of the space configuration file.
+\end{argtable}
+
+Example:\par\medskip
+\begin{latexcode}
+ % loads gsp-default.tex, the default configuration file
+ \greloadspaceconf{default}
+ % loads a custom configuration called gsp-myspaces.tex
+ \greloadspaceconf{myspaces}
+\end{latexcode}
+
+\macroname{\textbackslash greconffactor}{}{gsp-default.tex}
+A count which indicates the staff size that a space configuration file is designed for. Each space configuration file must have this value set as Gregorio\TeX\ will compare it to the current staff size to determine if the configuration file being loaded needs to be rescaled.
+
+\macroname{\textbackslash gresetlineheightexpansion}{\{\#1\}}{gregoriotex-main.tex}
+Macro to configure line height expansion behavior when notes appear
+above or below the staff lines.
+
+\begin{argtable}
+ \#1 & \texttt{variable} & Expand lines within a score independently
+ of each other \\
+ & \texttt{uniform} & Expand all lines within a score uniformly
+\end{argtable}
+
+By default, Gregorio\TeX{} uses \texttt{variable} line expansion. This
+produces output similar to modern liturgical books. However, this
+feature imposes a slight performance impact and typically requires a
+second pass (run of \texttt{lualatex}) to get the heights right.\bigskip
+
+The older behavior of Gregorio\TeX{}, \texttt{uniform} line expansion,
+does not have this performance impact. However, the extra space it adds
+below the staff lines may look out-of-place in a section where there are
+no notes below the staff lines.\bigskip
+
+This behavior may be switched as needed within a \TeX{} document and
+affects all the scores which follow. However, if \texttt{variable} line
+expansion is enabled anywhere in the document, the second pass will be
+necessary.
+
+\begin{small}
+\begin{framed}
+ \textit{For experts only:}\bigskip
+
+ It is possible to suppress the line height computation and just use
+ whatever has been computed from the previous run. If you are sure
+ that the score line heights haven't changed from the previous run,
+ define the \verb=\greskipheightcomputation= control sequence before
+ including the Gregorio\TeX{} package. This will save a little bit
+ of time per run.
+\end{framed}
+\end{small}
+
+
+\subsubsection{Staff Lines}
+
+
+\macroname{\textbackslash gresetlinecolor}{\{\#1\}}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Macro for changing the color of the staff lines. The two most common colors you're going to want to use are \texttt{gregoriocolor} (see \nameref{colors}) and \texttt{black} (the default).
+
+\begin{argtable}
+ \#1 & \textit{color name} & The color of the staff lines
+\end{argtable}
+
+\macroname{\textbackslash gresetlines}{\{\#1\}}{gregoriotex-main.tex}
+Macro for setting whether the staff lines should be rendered or not.
+
+\begin{argtable}
+ \#1 & visible & The staff lines should be printed (default)\\
+ & invisible & The staff lines should not be printed
+\end{argtable}
+
+\macroname{\textbackslash gresetlinesbehindpunctumcavum}{\{\#1\}}{gregoriotex-signs.tex}
+Macro for setting whether the staff lines behind a punctum cavum should be shown or not.
+
+\begin{argtable}
+ \#1 & visible & The staff lines behind a punctum cavum should be printed (default)\\
+ & invisible & The staff lines behind a punctum cavum should not be printed
+\end{argtable}
+
+\macroname{\textbackslash gresetlinesbehindalteration}{\{\#1\}}{gregoriotex-signs.tex}
+Macro for setting whether the staff lines behind an alternation (\ie, an accidental) should be shown or not.
+
+\begin{argtable}
+ \#1 & visible & The staff lines behind an alteration should be printed (default)\\
+ & invisible & The staff lines behind an alteration should not be printed
+\end{argtable}
+
+
+\subsubsection{Score Font}
+Gregorio\TeX\ currently supports 3 different fonts for the glyphs in a score (neumes, clefs, alterations, \etc): Greciliae (a customized version of Caeciliae by Fr.\ Matthew Spencer, OSJ), Gregorio, and Parmesan (developed for Lilypond by Juergen Reuter).
+
+\macroname{\textbackslash gresetgregoriofont}{[\optional{\#1}]\{\#2\}}{gregoriotex-main.tex}
+Set the font used for the neumes. The optional argument \texttt{[\#1]}
+may be used to specify an alternate font/rule set. Currently, the only
+available alternate font/rule set is \texttt{op} for Dominican neumes.
+
+\begin{argtable}
+ \#1 & \textit{(omitted)} & Use the normal font and rule set (default).\\
+ & op & Use the alternate Dominican font/rule set.\\
+ \#2 & greciliae & Use the Greciliae font (default).\\
+ & gregorio & Use the Gregorio font.\\
+ & parmesan & Use the Parmesan font.\\
+\end{argtable}
+
+
+\subsubsection{Glyph Alteration}
+In addition to the normal glyphs loaded by the choice of font, Gregorio\TeX\ also supports several methods for fine tuning the choice of glyphs. Using the below functions, you can choose from alternative glyphs which are already built into Gregorio\TeX\ or import custom glyphs you have designed yourself.
+
+\macroname{\textbackslash grechangeglyph}{\{\#1\}\{\#2\}\{\#3\}}{gregoriotex-main.tex}
+Substitutes the given Gregorio\TeX\ score glyph with the specified glyph
+from the specified font.
+
+\begin{argtable}
+ \#1 & string & The name of the GregorioTeX glyph to replace.\\
+ \#2 & string & The name of the font to use.\\
+ \#3 & number & The code point of the glyph to use.\\
+ & \texttt{.}string & The name of the variant (appended to \#1) to use.\\
+ & string & (any other string) The name of the glyph to use.
+\end{argtable}
+
+\medskip If \texttt{\#1} has a wildcard (a \texttt{*}) in it, then
+\texttt{\#3} must start with a dot and all glyphs matching \texttt{\#1}
+will be replaced with corresponding glyphs whose names have \texttt{\#3}
+appended.
+
+\medskip If \texttt{\#2} is \texttt{*}, then the substitution is assumed
+to be available in all score fonts.
+
+\medskip For example, to use the old glyphs (from Caeciliae) for the
+strophicus, use the following:\par\medskip
+\begin{latexcode}
+ \grechangeglyph{Stropha}{greciliae}{.caeciliae}
+ \grechangeglyph{StrophaAucta}{greciliae}{.caeciliae}
+\end{latexcode}
+
+\medskip To replace all torculus resupinus glyphs with their alternate
+versions, use the following:\par\medskip
+\begin{latexcode}
+ \grechangeglyph{TorculusResupinus*}{*}{.alt}
+\end{latexcode}
+
+\macroname{\textbackslash greresetglyph}{\{\#1\}}{gregoriotex-main.tex}
+Removes a GregorioTeX score glyph substitution, restoring it back to
+its original form.
+
+\begin{argtable}
+ \#1 & string & The name of the GregorioTeX glyph to restore.\\
+\end{argtable}
+
+\medskip If \texttt{\#1} has a wildcard (a \texttt{*}) in it, then
+all glyphs matching \texttt{\#1} will be restored.
+
+\medskip For example, to restore the strophicus back to the new glyphs,
+use the following:\par\medskip
+\begin{latexcode}
+ \greresetglyph{Stropha}
+ \greresetglyph{StrophaAucta}
+\end{latexcode}
+
+\medskip To restore all torculus resupinus glyphs to their original
+form, use the following:\par\medskip
+\begin{latexcode}
+ \greresetglyph{TorculusResupinus*}
+\end{latexcode}
+
+\macroname{\textbackslash gredefsymbol}{\{\#1\}\{\#2\}\{\#3\}}{gregoriotex-symbols.tex}
+Defines (or redefines) a TeX control sequence to be a non-score symbol.
+If defined this way, the symbol will scale with the text font.
+
+\begin{argtable}
+ \#1 & string & The name of the TeX control sequence (without leading backslash).\\
+ \#2 & string & The name of the font to use.\\
+ \#3 & number & The code point of the glyph to use.\\
+ & string & The name of the glyph to use.
+\end{argtable}
+
+\macroname{\textbackslash gredefsizedsymbol}{\{\#1\}\{\#2\}\{\#3\}}{gregoriotex-symbols.tex}
+Defines (or redefines) a \TeX\ control sequence to be a non-score symbol
+which requires a single numeric argument (in points) to which the symbol
+will be scaled.
+
+\begin{argtable}
+ \#1 & string & The name of the TeX control sequence (without leading backslash).\\
+ \#2 & string & The name of the font to use.\\
+ \#3 & number & The code point of the glyph to use.\\
+ & string & The name of the glyph to use.
+\end{argtable}
+
+\macroname{\textbackslash gresethepisemus}{\{\#1\}}{gregoriotex-signs.tex}
+Determines whether Gregorio\TeX\ should join (bridge) horizontal episema on adjacent notes.
+
+\begin{argtable}
+ \#1 & bridge & Adjacent horizontal episema are joined together (default).\\
+ & break & Adjacent horizontal episema are not joined.
+\end{argtable}
+
+\macroname{\textbackslash gresetpunctumcavum}{\{\#1\}}{gregoriotex-signs.tex}
+A shortcut for switching to the alternative punctum cavum and back.
+
+\begin{argtable}
+ \#1 & alternate & use the alternate punctum cavum\\
+ & normal & use the normal punctum cavum
+\end{argtable}
+
+Using the alternate punctum cavum is the equivalent of issuing the following commands:
+
+\begin{latexcode}
+ \grechangeglyph{PunctumCavum}{greciliae}{.caeciliae}%
+ \grechangeglyph{LineaPunctumCavum}{greciliae}{.caeciliae}%
+ \grechangeglyph{PunctumCavumHole}{greciliae}{.caeciliae}%
+ \grechangeglyph{LineaPunctumCavumHole}{greciliae}{.caeciliae}%
+\end{latexcode}
+
+\macroname{\textbackslash gresetglyphstyle}{\{\#1\}}{gregoriotex-chars.tex}
+Gregorio\TeX\ supports several glyph styles which can be changed with this macro. These style replace some non-note glyphs with alternatives.
+
+\begin{argtable}
+ \#1 & default & Use the default style\\
+ & medicaea & Use a Medicaea style\\
+ & hufnagel & Use the hufnagel style\\
+ & mensural & Use the mensural style
+\end{argtable}
+
+%%% Should there be a table here or in the appendix which shows the affected glyphs in each of the styles?
+
+
+\subsubsection[Barred letters (A/, etc.)]{Barred letters (\Abar, etc.)}
+
+\macroname{\textbackslash gresimpledefbarredsymbol}{\{\#1\}\{\#2\}}{gregoriotex-symbols.tex}
+Redefines a \TeX\ control sequence to be a a barred symbol.
+
+\begin{argtable}
+ \#1 & character & must be \texttt{A}, \texttt{R}, or \texttt{V}.\\
+ \#2 & dimension & how much the bar will be shifted left.\\
+\end{argtable}
+
+Gregorio does not have precomposed barred letters, instead, it has bars that you
+can you to composed barred letters in your text font. This command is the most
+simple version.
+
+For example:
+
+\medskip \begin{latexcode}
+ \gresimpledefbarglyph{A}{0.3em}
+\end{latexcode}
+
+Will define \texttt{\textbackslash Abar} to be a A with a bar shifted right
+of \texttt{0.3em} from the beginning of the glyph. This is the default definition
+and fits well with the Linux Libertine font. If you use another font, you'll
+certainly have to change this value by calling the \texttt{gresimpledefbarglyph} command.
+
+\macroname{\textbackslash gredefbarredsymbol}{\{\#1\}\{\#2\}\{\#3\}\{\#4\}\{\#5\}\{\#6\}}{gregoriotex-symbols.tex}
+Redefines a \TeX\ control sequence to be a barred symbol.
+
+\begin{argtable}
+ \#1 & string & the name of the command you want to define.\\
+ \#2 & string & command to typeset the text.\\
+ \#3 & string & symbol of the bar (must be defined through \texttt{gredefsizedsymbol}).\\
+ \#4 & number & the size of greextra to use (in pt).\\
+ \#5 & dimension & horizontal right shift of the bar.\\
+ \#6 & dimension & vertical shift of the bar glyph.\\
+\end{argtable}
+
+This is a more complete version of the previous command, it allows you to define
+barred letters with a different style. For example you can choose another bar
+drawing, or take a bar more adapted to small font size.
+
+For example:
+
+\begin{footnotesize}
+\begin{latexcode}
+ \gredefbarredsymbol{RBarBold}{\textbf{R}}{greRBarSmall}{13}{1.7mm}{0.1mm}
+\end{latexcode}
+\end{footnotesize}
+
+\gredefbarredsymbol{RBarBold}{\textbf{R}}{greRBarSmall}{13}{1.7mm}{0.1mm}
+
+Will define \texttt{\textbackslash RBarBold} to be a bold \textbf{R} with
+the bar made for small text (a bit bolder, named \texttt{RBarSmall} in greextra)
+, at 12pt, shifted right of \texttt{1.7mm} from the beginning of the glyph, and lowered down
+by \texttt{0.1mm}. The result is that \texttt{\textbackslash RBarBold} will typeset \RBarBold .
+
+See Appendix \ref{subsec:greextra} for a list of bars and other
+symbols present in the greextra font.
+
+\macroname{\textbackslash grelatexsimpledefbarredsymbol}{\{\#1\}\{\#2\}\{\#3\}\{\#4\}\{\#5\}}{gregoriotex-symbols.tex}
+Redefines a \TeX\ control sequence to be a barred symbol.
+
+\bigskip\textbf{Only available in \LaTeX.}
+
+\begin{argtable}
+ \#1 & character & must be \texttt{A}, \texttt{R}, or \texttt{V}.\\
+ \#2 & dimension & how much the bar will be shifted left when upright and medium weight.\\
+ \#3 & dimension & how much the bar will be shifted left when italic/slanted and medium weight.\\
+ \#4 & dimension & how much the bar will be shifted left when upright and bold.\\
+ \#5 & dimension & how much the bar will be shifted left when italic/slanted and bold.\\
+\end{argtable}
+
+This is like \verb=gresimpledefbarglyph=, but allows setting different shifts
+for different font shapes and weights. If you need something more elaborate,
+you will need to redefine the bar macro(s) manually. This macro is only
+available in \LaTeX{} because it depends upon the \LaTeX{} font system.
+
+\macroname{\textbackslash grebarredsymbol}{\{\#1\}\{\#2\}\{\#3\}\{\#4\}\{\#5\}}{gregoriotex-symbols.tex}
+Generates a barred symbol. This macro does not change any barred symbol
+definitions. Instead, it actually generates the code that would show the
+barred symbol.
+
+\begin{argtable}
+ \#1 & string & command to typeset the text.\\
+ \#2 & string & symbol of the bar (must be defined through \texttt{gredefsizedsymbol}).\\
+ \#3 & number & the size of greextra to use (in pt).\\
+ \#4 & dimension & horizontal right shift of the bar.\\
+ \#5 & dimension & vertical shift of the bar glyph.\\
+\end{argtable}
+
+\macroname{\textbackslash greseparator}{\{\#1\}\{\#2\}}{gregoriotex-symbols.tex}
+A macro for invoking one of the five separators (fancy lines) which are contained in the greextra font.
+
+\begin{argtable}
+ \#1 & 1--5 & the line desired\\
+ \#2 & integer & the point size at which to print the line\\
+\end{argtable}
+
+\subsubsection{Styling}
+Different elements of an include score have different styles applied. These elements and their defaults are listed below:
+
+\let\stylename\texttt
+\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+\bigskip\rowcolors{1}{lightgray}{lightgray}
+\begin{tabular}{lp{7cm plus .5cm}r}
+ Element Name & Description & Default\\
+ \hline
+ \stylename{initial} & Normal Initials & 40 pt font\\
+ \stylename{biginitial} & Big (2-Line) Initials & 80 pt font\\
+ \stylename{translation} & Translation text (appears below lyrics) & {\it italics}\\
+ \stylename{abovelinestext} & Above line text (\texttt{<alt></alt>} in gabc, appears above the staff) & normal\\
+ \stylename{normalstafflines} & Full length staff lines & none\\
+ \stylename{additionalstafflines} & short lines behind notes above or below the staff & special\footnotemark[1]\\
+ \stylename{lowchoralsign} & low choral signs & none\\
+ \stylename{highchoralsign} & high choral signs & none\\
+ \stylename{firstsyllableinitial} & the first letter of the first syllable of a score which is not the score initial & none\\
+ \stylename{firstsyllable} & the balance of the first syllable of the score & none\\
+ \stylename{modeline} & the rendered annotation from the \texttt{mode: ;} header in the gabc file & \parbox[t]{2.2cm}{\raggedleft\textsc{\textbf{Bold Small Capitals}}}\\
+ \stylename{nabc} & ancient notation & {\color{gregoriocolor}gregoriocolor} (\LaTeX)\\
+ && none (Plain\TeX)\\
+\end{tabular}
+
+\footnotemark[1]\textit{Special:} By default, \texttt{additionalstafflines} inherits its properties from \texttt{normalstafflines}. To decouple these environments, you must manually change \texttt{additionalstafflines} using \texttt{\textbackslash grechangestyle}.
+\renewcommand{\thefootnote}{\arabic{footnote}}
+
+\macroname{\textbackslash grechangestyle}{\{\#1\}\{\#2\}[\#3]}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Command to change styling of a score element.
+
+\begin{argtable}
+ \#1 & string & element whose styling is to be changed (see list above for options)\\
+ \#2 & \TeX\ code & the code necessary to turn on the styling\\
+ \#3 & \TeX\ code & Optional. The code necessary to turn off the styling (\eg, if the code to turn on the styling contains a \verb=\begin{environment}= then the code to turn it off must have the matching \verb=\end{environment}=.
+\end{argtable}
+
+Examples:\par\medskip
+\begin{latexcode}
+ % This one works for both PlainTeX and LaTeX this would make
+ % the translations bold and italic
+ \grechangestyle{translation}{\it\bf}
+
+ % This one is LaTeX only, and would make the above lines
+ % text small and italic
+ \grechangestyle{abovelinetext}{\begin{small}\begin{italic}}%
+ [\end{italic}\end{small}]
+
+ % This would make the initial print in 36pt font.
+ \grechangestyle{initial}{\fontsize{36}{36}\selectfont}
+\end{latexcode}
+
+\bigskip
+Each element will be typeset within an isolated group to prevent styling commands from leaking from one element to the next. As a result, if a styling command has an ``on-switch'' but no ``off-switch'' (like \verb=\it= or \verb=\bf= in the first example above) it is not necessary to encapsulate them within \verb=\begingroup= and \verb=\endgroup=. As a result, the third argument is only necessary for styling commands which come in pairs (like the environments in the second example).
+
+\subsubsection{Text Elements}
+While the gabc headers provide support for some of the text elements commonly found on chant scores, Gregorio\TeX\ provides the following functions to allow you to enter and control those elements with a greater degree of precision than the gabc headers.
+
+\macroname{\textbackslash greannotation}{[\#1]\{\#2\}}{gregoriotex-main.tex}
+Macro to add annotations (the text which appears above the initial) to a score. While a single call of the function does not support multiple lines, successive calls to the function will be added to the annotation as a new line below what is already there.
+
+\begin{argtable}
+ \#1 & c & When adding a new line, align the center of the new line with the center of the existing lines\\
+ & l & When adding a new line, align the left side of the new line with the left side of the existing lines\\
+ & r & When adding a new line, align the right side of the new line with the right side of the existing lines\\
+ \#2 & string & the text of the annotation
+\end{argtable}
+
+\textbf{Nota Bene:} The first argument does not affect the alignment of lines already in the annotation, only the way the new line aligns with the existing lines as a whole.
+
+\macroname{\textbackslash grecommentary}{\{\#1\}}{gregoriotex-main.tex}
+Macro to add commentary (the text flush right at the top, usually a scripture reference) to a score. While a single call of this function does not support multiple lines, successive calls to the function will add a new line to the commentary directly below the previous.
+
+\begin{argtable}
+ \#1 & string & The text of the commentary.\\
+\end{argtable}
+
+\textbf{Nota Bene:} This command should appear directly before \verb=\gregorioscore= when used.
+
+\macroname{\textbackslash grescorereference}{\{\#1\}}{gregoriotex-main.tex}
+Macro to hold the score reference. Currently the score reference does not print.
+
+\begin{argtable}
+ \#1 & string & The text of the score reference.\\
+\end{argtable}
+
+\macroname{\textbackslash greillumination}{\{\#1\}}{gregoriotex-main.tex}
+Macro to add an illuminated initial.
+
+\begin{argtable}
+ \#1 & \TeX\ code & the code necessary to make the illuminated initial appear\\
+\end{argtable}
+
+\textbf{Nota Bene:} Usually the argument of this command should be an \verb=\includegraphics= command, but you may use what ever you want as the illuminated initial.
+
+
+\subsubsection{Text Alignment}
+Gregorio\TeX\ allows you to manipulate the global alignment behavior of some text elements using the following commands.
+
+\macroname{\textbackslash gresetlyriccentering}{\{\#1\}}{gregoriotex-syllable.tex}
+Macro to set how the text of the lyrics aligns with the alignment point of its respective neumes. The alignment point of the neumes is determined as follows:
+
+\begin{itemize}
+\item If the first glyph is only one note, or is a normal pes, or is composed of three or more notes, the alignment point is the middle of the first note.
+\item If the first glyph is composed of two notes (other than a normal pes), the alignment point is the middle of the glyph.
+\item In the case of a porrectus, the alignment point is the middle of an imaginary square punctum beginning at the same point as the porrectus.
+\end{itemize}
+
+\begin{argtable}
+ \#1 & vowel & The center of the vowel in the syllable will align with the alignment point of the neumes\\
+ & syllable & The center of the syllable will align with the alignment point of the neumes
+\end{argtable}
+
+\textbf{Nota Bene:} What constitutes the ``vowel'' of the syllable is determined by the language the lyric text is written in, as specified by the use of the \texttt{language} header in the gabc file. Out of the box, Gregorio\TeX\ explicitly supports only Latin and English, but the rules for Latin have a high degree of overlap with many Romance languages, allowing them to fall back on the Latin rules with acceptable results.
+
+You can also define your own languages in \texttt{gregorio-vowels.dat}. If you do define a language, please consider sharing your work by submitting it to the project (see CONTRIBUTING.md for instructions).
+
+Finally, in cases where you want some sort of exceptional alignment, you can force Gregorio to consider a particular part of the syllable to be the ``vowel'' by enclosing it in curly braces (``\{'' and ``\}'') in your gabc file.
+
+\macroname{\textbackslash gresettranslationcentering}{\{\#1\}}{gregoriotex-main.tex}
+Macro to specify how the translation text should be aligned with it respective syllable text.
+
+\begin{argtable}
+ \#1 & left & The translation text is left aligned with its respective syllable text.\\
+ & center & The translation text is centered under its respective syllable.
+\end{argtable}
+
+
+\subsubsection{End of Line Behavior}
+While Gregorio\TeX\ will automatically wrap scores to fit your page, there are several ways to fine tune that line breaking behavior with the following commands.
+
+\macroname{\textbackslash gresetbreakineuouae}{\{\#1\}}{gregoriotex-main.tex}
+Macro to determine whether line breaks are allowed inside a EUOUAE area (delimited by \texttt{<eu></eu>} tags in gabc).
+
+\begin{argtable}
+ \#1 & allow & Line breaks are allowed\\
+ & prohibit & Line breaks are prohibited, the entire EUOUAE area should appear on one line
+\end{argtable}
+
+\macroname{\textbackslash gresetbreakintranslation}{\{\#1\}}{gregoriotex-main.tex}
+Macro to determine whether line breaks are allowed inside a translation.
+
+\begin{argtable}
+ \#1 & allow & Line breaks are allowed\\
+ & prohibit & Line breaks are prohibited, the entire translation should appear on one line
+\end{argtable}
+
+\macroname{\textbackslash greseteolcustos}{\{\#1\}}{gregoriotex-main.tex}
+Macro to determine whether Gregorio\TeX\ should automatically place the custos at a line break.
+
+\begin{argtable}
+ \#1 & auto & Custos will be automatically placed at each line break\\
+ & manual & Custos will only be placed at line breaks if they are specified in the gabc (\eg \texttt{(g+z)})
+\end{argtable}
+
+\textbf{Nota Bene:} This command only effects the custos that appears at the end of a line. Custos which are placed at a key change are unaffected. Further, if custos are specified in the gabc file manually and Gregorio\TeX\ is set to place custos automatically, you will get two custos at the line breaks.
+
+\macroname{\textbackslash greseteolshifts}{\{\#1\}}{gregoriotex-main.tex}
+Macro to determine whether Gregorio\TeX\ should apply a small shift at the end of each line, thus allowing lyrics to stretch under the final custos.
+
+\begin{argtable}
+ \#1 & enable & The shifts are applied (default)\\
+ & disable & The shifts are not applied.
+\end{argtable}
+
+\macroname{\textbackslash gresetbolshifts}{\{\#1\}}{gregoriotex-main.tex}
+Macro to determine whether Gregorio\TeX\ should apply a small shift at the beginning of each line so that lines are aligned on the notes rather than the syllable text.
+
+\begin{argtable}
+ \#1 & enable & The shifts are applied (default)\\
+ & disable & The shifts are not applied.
+\end{argtable}
+
+\macroname{\textbackslash gresetlastline}{\{\#1\}}{gregoriotex-main.tex}
+Macro to determine whether the last line of the score should be justified or not.
+
+\begin{argtable}
+ \#1 & justified & Set the last line justified with the rest of the score\\
+ & ragged & Set the last line ragged (default)
+\end{argtable}
+
+
+\subsubsection{Hyphenation}
+
+\macroname{\textbackslash gresethyphen}{\{\#1\}}{gregoriotex-main.tex}
+Tell Gregorio\TeX\ to when to place a hyphen between
+syllables in polysyllabic words in a score. This is done by overriding \texttt{maximumspacewithoutdash} so subsequent changes to this dimension will override this command.
+
+\begin{argtable}
+ \#1 & force & Hyphens will appear between all syllables in polysyllabic words.\\
+ & auto & Hyphens will appear based on the setting of \texttt{maximumspacewithoutdash}
+\end{argtable}
+
+\textbf{Nota Bene:} \verb=\gresethyphen{auto}= restores \texttt{maximumspacewithoutdash} to the value found in \textit{gsp-default.tex}. If you have changed your score size, you may need to change this distance to a more appropriate value using \verb=\grechangedim=.
+
+\macroname{\textbackslash greseteolhyphen}{\{\#1\}}{gregoriotex-main.tex}
+Marco to determine how much space the hyphen at the end of a line occupies for the purposes of spacing caluclations.
+
+\begin{argtable}
+ \#1 & normal & The hyphen occupies its normal space\\
+ & zero & The hyphen is considered to take up no space
+\end{argtable}
+
+
+\subsubsection{Clef Visibility}
+
+\macroname{\textbackslash gresetclef}{\{\#1\}}{gregoriotex-signs.tex}
+Macro to tell Gregorio\TeX\ whether the clefs should be printed or not.
+
+\begin{argtable}
+ \#1 & visible & Clefs will be printed (default)\\
+ & invisible & Clefs will not be printed
+\end{argtable}
+
+
+\subsubsection{Clivis Alignment}
+Since the center of the clivis is different from most neumes, Gregorio\TeX\ supports several behaviors for determining how to align it with its lyrics.
+
+\macroname{\textbackslash gresetclivisalignment}{\{\#1\}}{gregoriotex-syllable.tex}
+Macro to determine the method used for aligning the clivis with its lyrics.
+
+\begin{argtable}
+ \#1 & always & Align on the real center of the clivis\\
+ & never & align on the center of the first punctum in the clivis\\
+ & special & align on the real center of the clivis except when (1) notes would go left of text or (2) - consonants after vowels are larger than \verb=\gre@dimen@clivisalignmentmin= (default)
+\end{argtable}
+
+
+
+\subsubsection{Braces}
+
+\macroname{\textbackslash gresetbracerendering}{\{\#1\}}{gregoriotex-signs.tex}
+Macro to tell Gregorio\TeX{} whether to use \MP{} or fonts to render
+braces. \MP{} braces, the default, are tailored to better maintain
+optical line weight when stretched. \MP{} braces are designed to
+harmonize (and thus match best) with greciliae, but they still look good
+with the other score fonts.
+
+\begin{argtable}
+ \#1 & metapost & \MP{} will be used to render braces (default)\\
+ & font & The score font will be used to render braces
+\end{argtable}
+
+\macroname{\textbackslash grebarbracewidth}{}{gregoriotex-signs.tex}
+Returns the em-relative width of a bar brace when braces are rendered by
+\MP{} (as opposed to fonts). The value is scaled by the gregorio score
+size factor and thus is a score-relative value with a precise (but
+obscure) mathematical meaning. Suffice it to say that larger numbers
+make the bar brace wider and smaller numbers make the brace narrower.
+This must be a positive number, defaults to \texttt{.58879}, and
+harmonizes with the greciliae font. This macro must be redefined should
+a different value be desired.
+
+
+\subsubsection{Ancient Notation}
+For a full description of how to make use of the ancient notation capabilities of gregorio and Gregorio\TeX, look at the GregorioNabcRef documentation. The commands listed here allow the manipulation of settings related to that notation.
+
+\macroname{\textbackslash gresetnabcfont}{\{\#1\}\{\#2\}}{gregoriotex-nabc.tex}
+Macro to set the font to be used for the ancient notation.
+
+\begin{argtable}
+ \#1 & string & the name of the font\\
+ \#2 & integer & point size at which the font should be loaded\\
+\end{argtable}
+
+
+\subsection{Distances}\label{distances}
+
+Each of the following distances controls some aspect of the spacing of the Gregorio\TeX\ score. They are changed using \verb=\grechangedim=, documented above. If the distance permits a rubber value, then the default value will indicate the stretch and shrink (even if they are zero by default). Distances whose default value does not include a stretch or shrink may not take a rubber value.
+
+\emph{Note:} Because of the way Gregorio\TeX\ handles distances, these cannot be manipulated as if they were normal \TeX\ dimensions or skips. As a result they should only be changed using the command defined by Gregorio\TeX\ for this purpose.
+
+\macroname{additionallineswidth}{}{gsp-default.tex}
+The additional width of the additional lines (compared to the width of the glyph they're associated with).
+
+Default: \unit[0.14584]{cm}
+
+\macroname{alterationspace}{}{gsp-default.tex}
+Space between an alteration (flat or natural) and the next glyph.
+
+Default: \unit[0.07747]{cm} plus \unit[0.01276]{cm} minus \unit[0.00455]{cm}
+
+\macroname{beforealterationspace}{}{gsp-default.tex}
+Negative space, difference between the normal space between two notes and the space between a note and a flat.
+
+Default: $\unit[-0.32816]{cm}$ plus \unit[0.01093]{cm} minus \unit[0.01093]{cm}
+
+\macroname{beforelowchoralsignspace}{}{gsp-default.tex}
+Space before a low choral sign.
+
+Default: \unit[0.04556]{cm} plus \unit[0.00638]{cm} minus \unit[0.00638]{cm}
+
+\macroname{clefflatspace}{}{gsp-default.tex}
+Space between a clef and a flat (for clefs with flat).
+
+Default: \unit[0.05469]{cm} plus \unit[0.00638]{cm} minus \unit[0.00638]{cm}
+
+\macroname{interglyphspace}{}{gsp-default.tex}
+Space between glyphs in the same element.
+
+Default: \unit[0.06927]{cm} plus \unit[0.00363]{cm} minus \unit[0.00363]{cm}
+
+\macroname{zerowidthspace}{}{gsp-default.tex}
+Null space.
+
+Default: \unit[0]{cm} plus \unit[0]{cm} minus \unit[0]{cm}
+
+\macroname{interelementspace}{}{gsp-default.tex}
+Space between elements.
+
+Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00363]{cm}
+
+\macroname{largerspace}{}{gsp-default.tex}
+Larger space between elements.
+
+Default: \unit[0.10938]{cm} plus \unit[0.01822]{cm} minus \unit[0.00911]{cm}
+
+\macroname{glyphspace}{}{gsp-default.tex}
+Space between elements which has the size of a note.
+
+Default: \unit[0.21877]{cm} plus \unit[0.01822]{cm} minus \unit[0.01822]{cm}
+
+\macroname{intersyllablespacenotes}{}{gsp-default.tex}
+Minimum space between two notes of different syllables.
+
+Default: \unit[0.25523]{cm} plus \unit[0.31903]{cm} minus \unit[0]{cm}
+
+\macroname{spacebeforecustos}{}{gsp-default.tex}
+Space before custos.
+
+Default: \unit[0.1823]{cm} plus \unit[0.31903]{cm} minus \unit[0.0638]{cm}
+
+\macroname{spacebeforesigns}{}{gsp-default.tex}
+Space before punctum mora and augmentum duplex.
+
+Default: \unit[0.05469]{cm} plus \unit[0.00455]{cm} minus \unit[0.00455]{cm}
+
+\macroname{spaceaftersigns}{}{gsp-default.tex}
+Space after punctum mora and augmentum duplex.
+
+Default: \unit[0.08203]{cm} plus \unit[0.0082]{cm} minus \unit[0.0082]{cm}
+
+\macroname{spaceafterlineclef}{}{gsp-default.tex}
+Space after a clef at the beginning of a line.
+
+Default: \unit[0.27345]{cm} plus \unit[0.14584]{cm} minus \unit[0.01367]{cm}
+
+\macroname{interwordspacenotes}{}{gsp-default.tex}
+Space after at the end of a word when the last written symbol is a note and the first is a note.
+
+Default: \unit[0.29169]{cm} plus \unit[0.08751]{cm} minus \unit[0.05469]{cm}
+
+\macroname{interwordspacetext}{}{gsp-default.tex}
+Space after at the end of a word when the last written symbol is text and the first is text.
+
+Default: \unit[0.22787]{cm} plus \unit[0.41019]{cm} minus \unit[0.07292]{cm}
+
+\macroname{interwordspacenotes@euouae}{}{gsp-default.tex}
+Space after at the end of a word when the last written symbol is a note and the first is a note in \texttt{euouae} blocks.
+
+Default: \unit[0.19]{cm} plus \unit[0.1]{cm} minus \unit[0.05]{cm}
+
+\macroname{interwordspacetext@euouae}{}{gsp-default.tex}
+Space after at the end of a word when the last written symbol is text and the first is text in \texttt{euouae} blocks.
+
+Default: \unit[0.27]{cm} plus \unit[0.1]{cm} minus \unit[0.05]{cm}
+
+\macroname{bitrivirspace}{}{gsp-default.tex}
+Space between notes of a bivirga or trivirga.
+
+Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00546]{cm}
+
+\macroname{bitristrospace}{}{gsp-default.tex}
+Space between notes of a bistropha or tristrophae.
+
+Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00546]{cm}
+
+\macroname{punctuminclinatumshift}{}{gsp-default.tex}
+Space between two punctum inclinatum.
+
+Default: \unit[-0.03918]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm}
+
+\macroname{beforepunctainclinatashift}{}{gsp-default.tex}
+Space before puncta inclinata.
+
+Default: \unit[0.05286]{cm} plus \unit[0.00728]{cm} minus \unit[0.00455]{cm}
+
+\macroname{punctuminclinatumanddebilisshift}{}{gsp-default.tex}
+Space between a punctum inclinatum and a punctum inclinatum deminutus.
+
+Default: \unit[-0.02278]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm}
+
+\macroname{punctuminclinatumdebilisshift}{}{gsp-default.tex}
+Space between two punctum inclinatum deminutus.
+
+Default: \unit[-0.00728]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm}
+
+\macroname{punctuminclinatumbigshift}{}{gsp-default.tex}
+Space between puncta inclinata, larger ambitus (range=3rd).
+
+Default: \unit[0.07565]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm}
+
+\macroname{punctuminclinatummaxshift}{}{gsp-default.tex}
+Space between puncta inclinata, larger ambitus (range=4th -or more?-).
+
+Default: \unit[0.17865]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm}
+
+\macroname{spacearoundsmallbar}{}{gsp-default.tex}
+Space around virgula and divisio minima.
+
+Default: \unit[0.1823]{cm} plus \unit[0.22787]{cm} minus \unit[0.05469]{cm}
+
+\macroname{spacearoundminor}{}{gsp-default.tex}
+Space around divisio minor.
+
+Default: \unit[0.1823]{cm} plus \unit[0.22787]{cm} minus \unit[0.05469]{cm}
+
+\macroname{spacearoundmaior}{}{gsp-default.tex}
+Space around divisio maior.
+
+Default: \unit[0.1823]{cm} plus \unit[0.22787]{cm} minus \unit[0.05469]{cm}
+
+\macroname{spacearoundfinalis}{}{gsp-default.tex}
+Space around divisio finalis.
+
+Default: \unit[0.1823]{cm} plus \unit[0.1823]{cm} minus \unit[0.05469]{cm}
+
+\macroname{spacebeforefinalfinalis}{}{gsp-default.tex}
+A special space for finalis, for when it is the last glyph.
+
+Default: \unit[0.29169]{cm} plus \unit[0.07292]{cm} minus \unit[0.27345]{cm}
+
+\macroname{spacearoundclefbars}{}{gsp-default.tex}
+Additional space that will appear around bars that are preceded by a custos and followed by a key.
+
+Default: \unit[0.03645]{cm} plus \unit[0.00455]{cm} minus \unit[0.0009]{cm}
+
+\macroname{textbartextspace}{}{gsp-default.tex}
+Space between the text and the text of the bar.
+
+Default: \unit[0.24611]{cm} plus \unit[0.13672]{cm} minus \unit[0.04921]{cm}
+
+\macroname{notebarspace}{}{gsp-default.tex}
+Minimal space between a note and a bar.
+
+Default: \unit[0.31903]{cm} plus \unit[0.27345]{cm} minus \unit[0.02824]{cm}
+
+\macroname{maximumspacewithoutdash}{}{gsp-default.tex}
+Maximal space between two syllables for which we consider a dash is not needed.
+
+Default: \unit[0.02005]{cm}
+
+\macroname{afterclefnospace}{}{gsp-default.tex}
+An extensible space for the beginning of lines.
+
+Default: \unit[0]{cm} plus \unit[0.27345]{cm} minus \unit[0]{cm}
+
+\macroname{additionalcustoslineswidth}{}{gsp-default.tex}
+Width of the additional lines, used only for the custos. The width is the one for the custos at end of lines, the line for custos in the middle of a score is the same multiplied by 2.
+
+Default: \unit[0.09114]{cm}
+
+\macroname{afterinitialshift}{}{gsp-default.tex}
+Space between the initial and the beginning of the score.
+
+Default: \unit[0.2457]{cm} plus \unit[0]{cm} minus \unit[0]{cm}
+
+\macroname{beforeinitialshift}{}{gsp-default.tex}
+Space between the initial and the beginning of the score.
+
+Default: \unit[0.2457]{cm} plus \unit[0]{cm} minus \unit[0]{cm}
+
+\macroname{minimalspaceatlinebeginning}{}{gsp-default.tex}
+Minimal space at the beginning of a line.
+
+Default: \unit[1.7]{cm}
+
+\macroname{manualinitialwidth}{}{gsp-default.tex}
+Space to force the initial width to. Ignored when 0.
+
+Default: \unit[0]{cm}
+
+\macroname{annotationseparation}{}{gsp-default.tex}
+This space is the one between lines in the annotation (text above the initial).
+
+Default: \unit[0.85]{cm}
+
+\macroname{annotationraise}{}{gsp-default.tex}
+Amount to raise (positive) or lower (negative) the annotation from it's normal position (baseline of the first line aligned with the top line of the staff).
+
+Default: \unit[0]{cm}
+
+\macroname{noclefspace}{}{gsp-default.tex}
+Space at the beginning of the lines if there is no clef.
+
+Default: \unit[0.1]{cm}
+
+\macroname{abovesignsspace}{}{gsp-default.tex}
+Space above the chironomic signs.
+
+Default: \unit[0.8]{cm}
+
+\macroname{belowsignsspace}{}{gsp-default.tex}
+Space below the chironomic signs.
+
+Default: \unit[0]{cm}
+
+\macroname{choralsigndownshift}{}{gsp-default.tex}
+The distance to shift choral signs down. The following choral signs are shifted down:
+
+\begin{itemize}
+ \item Low choral signs that are not lower than the note
+ \item High choral signs which are in a space
+ \item Low choral signs that are lower than the note which are in a space
+\end{itemize}
+
+Default: \unit[0.00911]{cm}
+
+\macroname{choralsignupshift}{}{gsp-default.tex}
+The distance to shift choral signs up. The following choral signs are shifted up:
+
+\begin{itemize}
+ \item High choral signs which are on a line
+ \item Low choral signs that are lower than the note which are on a line
+\end{itemize}
+
+Default: \unit[0.04556]{cm}
+
+\macroname{translationheight}{}{gsp-default.tex}
+The space for the translation.
+
+Default: \unit[0.5]{cm}
+
+\macroname{spaceabovelines}{}{gsp-default.tex}
+The space above the lines.
+
+Default: \unit[0.45576]{cm} plus \unit[0.36461]{cm} minus \unit[0.09114]{cm}
+
+\macroname{spacelinestext}{}{gsp-default.tex}
+The space between the lines and the bottom of the text.
+
+Default: \unit[0.60617]{cm} plus \unit[0]{cm} minus \unit[0]{cm}
+
+\macroname{spacebeneathtext}{}{gsp-default.tex}
+The space beneath the text.
+
+Default: \unit[0]{cm} plus \unit[0]{cm} minus \unit[0]{cm}
+
+\macroname{abovelinestextraise}{}{gsp-default.tex}
+Height of the text above the note line.
+
+Default: \unit[1.7]{cm}
+
+\macroname{abovelinestextheight}{}{gsp-default.tex}
+Height that is added at the top of the lines if there is text above the lines (it must be bigger than the text for it to be taken into consideration).
+
+Default: \unit[0.3]{cm}
+
+\macroname{braceshift}{}{gsp-default.tex}
+An additional shift you can give to the brace above the bars.
+
+Default: \unit[0]{cm}
+
+\macroname{curlybraceaccentusshift}{}{gsp-default.tex}
+A shift you can give to the accentus above the curly brace.
+
+Default: $\unit[-0.05]{cm}$
+
+\macroname{nabcinterelementspace}{}{gsp-default.tex}
+Space between elements in ancient notation.
+
+Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00363]{cm}
+
+\macroname{nabclargerspace}{}{gsp-default.tex}
+Larger space between elements in ancient notation.
+
+Default: \unit[0.10938]{cm} plus \unit[0.01822]{cm} minus \unit[0.00911]{cm}
+
+\macroname{clivisalignmentmin}{}{gsp-default.tex}
+When \verb=\gre@clivisalignment= is 2, this distance is the maximum length of the consonants after vowels for which the clivis will be aligned on its center.
+
+Default: \unit[0.3]{cm}
+
+\macroname{clefchangespace}{}{gsp-default.tex}
+Space around a clef change.
+
+Default: \unit[0.01768]{cm} plus \unit[0.00175]{cm} minus \unit[0.01768]{cm}
+
+
+\subsection{Penalties}\label{penalties}
+Penalties are used by \TeX\ to determine where line and page breaks should occur. Gregorio\TeX\ modifies or defines a few of its own to help with that process in scores.
+
+\macroname{\textbackslash grebrokenpenalty}{}{gsp-default.tex}
+The vertical penalty inserted after a break on a clef change.
+
+Default: 0
+
+\macroname{\textbackslash greclubpenalty}{}{gsp-default.tex}
+The club penalty (determines how important it is to prevent orphans from occurring).
+
+Default: 0
+
+\macroname{\textbackslash grewidowpenalty}{}{gsp-default.tex}
+The widow penalty (determines how important it is to prevent widows from occurring).
+
+Default: 0
+
+\macroname{\textbackslash greemergencystretch}{}{gsp-default.tex}
+The value of the last ditch stretch for overfull boxes.
+
+Default: \verb=\emergencystretch=
+
+\macroname{\textbackslash greendafterbarpenalty}{}{gsp-default.tex}
+The end after bar penalty.
+
+Default: $-200$
+
+\macroname{\textbackslash greendafterbaraltpenalty}{}{gsp-default.tex}
+The alternate end after bar penalty (used when there is no text under the bar).
+
+Default: $-200$
+
+\macroname{\textbackslash greendofelementpenalty}{}{gsp-default.tex}
+The end of element penalty.
+
+Default: $-50$
+
+\macroname{\textbackslash greendofsyllablepenalty}{}{gsp-default.tex}
+The end of element penalty.
+
+Default: $-50$
+
+\macroname{\textbackslash greendofwordpenalty}{}{gsp-default.tex}
+The end of element penalty.
+
+Default: $-100$
+
+\macroname{\textbackslash grehyphenpenalty}{}{gsp-default.tex}
+The hyphen penalty.
+
+Default: $-200$
+
+\macroname{\textbackslash grenobreakpenalty}{}{gsp-default.tex}
+Penalty to prevent a line break.
+
+Default: 10001
+
+\macroname{\textbackslash grenewlinepenalty}{}{gsp-default.tex}
+Penalty to force a line break.
+
+Default: -10001
+
+\macroname{\textbackslash grelooseness}{}{gsp-default.tex}
+The \TeX\ looseness within a score.
+
+Default: \verb=\looseness=
+
+\macroname{\textbackslash gretolerance}{}{gsp-default.tex}
+The \TeX\ tolerance within a score. See \url{https://en.wikibooks.org/wiki/TeX/tolerance} for an explanation of what tolerance is.
+
+Default: 9000
+
+\macroname{\textbackslash grepretolerance}{}{gsp-default.tex}
+The \TeX\ pretolerance within a score. See \url{https://en.wikibooks.org/wiki/TeX/pretolerance} for an explanation of what pretolerance is.
+
+Default: $-1$ (Lua\TeX\ versions prior to 0.80) or \verb=\pretolerance= (versions after, and including, 0.80)
+
+\textit{Nota bene:} For more details on why this is necessary see the comments in gsp-default.tex.
+
+
+
+
+
+\subsection{Colors}\label{colors}
+Colors are strictly a \LaTeX\ phenomena as currently implemented. All
+commands which change a color will raise a warning in Plain\TeX, but will not alter the document.
+
+All colors can be redefined using \verb=\definecolor=. See the
+\verb=xcolor= package for documentation.
+
+Example:\par\medskip
+\begin{latexcode}
+ \definecolor{gregoriocolor}{RGB}{229,53,44}
+\end{latexcode}
+
+\macroname{grebackgroundcolor}{}{gregoriotex.sty}
+The color Gregorio\TeX\ uses to block out elements which have been printed,
+but shouldn't show (\eg, the staff line going through the interior of
+a punctum cavum) \verb={RGB}{255,255,255}= (white)
+
+\macroname{gregoriocolor}{}{gregoriotex.sty}
+A red similar to that found in liturgical documents. This is the color that Gregorio\TeX\ uses for text formated with \texttt{<c></c>} tags in gabc.
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "GregorioRef"
+%%% End:
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_gregorio.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_gregorio.tex
new file mode 100644
index 00000000000..801d2967ccd
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_gregorio.tex
@@ -0,0 +1,854 @@
+% !TEX root = GregorioRef.tex
+% !TEX program = LuaLaTeX+se
+\section{Gregorio Controls}
+
+These functions are the ones written by Gregorio to the gtex file.
+While one could, in theory, use/change them to alter the appearance of
+elements of the score, it is far better to make your changes in the
+gabc file and let Gregorio make the changes to the gtex file.
+
+\macroname{\textbackslash GreAnnotationLines}{\#1\#2}{gregoriotex-main.tex}
+A wrapper macro for placing annotations above the initial. The
+arguments are provided by the \texttt{gabc} file in the
+\texttt{annotation} header field. This macro tests for the presence
+of the annotation box which means that the annotation is explicitly
+defined in the \texttt{main.tex} file. If so, this macro does nothing,
+respecting the annotation value in the \texttt{main.tex} file.
+
+\begin{argtable}
+ \#1 & string & First line text to place above the initial.\\
+ \#2 & string & Second line text to place above the initial.\\
+\end{argtable}
+
+\macroname{\textbackslash GreBeginScore}{\#1\#2\#3\#4\#5\#6}{gregoriotex-main.tex}
+Macro to start a score.
+
+\begin{argtable}
+ \#1 & string & a unique identifier for the score (currently an SHA-1-based digest of the gabc file)\\
+ \#2 & integer & the height number of the top pitch of the entire score, including signs\\
+ \#3 & integer & the height number of the bottom pitch of the entire score, including signs\\
+ \#4 & 0 & there is no translation line in the score\\
+ & 1 & there is a translation line somewhere in the score\\
+ \#5 & 0 & there is no above lines text in the score\\
+ & 1 & there is above lines text somewhere in the score\\
+ \#6 & string & the absolute filename of the gabc file if point-and-click is enabled.
+\end{argtable}
+
+\macroname{\textbackslash GreEndScore}{}{gregoriotex-main.tex}
+Macro to end a score.
+
+\macroname{\textbackslash GreAccentus}{\#1\#2}{gregoriotex-signs.tex}
+Macro for typesetting an accentus.
+
+\begin{argtable}
+ \#1 & integer & height number of episemus\\
+ \#2 & string & Type of glyph the episemus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreAdditionalLine}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro to typeset the additional line above or below the staff.
+
+\begin{argtable}
+ \#1 & string & See \nameref{EpisemusSpecial}.\\
+ \#2 & integer & The ambitus of the porrectus or porrectus flexus if the first references these glyph types; ignored otherwise.\\
+ \#3 & integer & Set horizontal episemus (0), horizontal episemus under a note (1), line at top of staff (2), line at bottom of staff (3), choral sign (4).\\
+\end{argtable}
+
+\macroname{\textbackslash GreAdjustSecondLine}{}{gregoriotex.tex}
+%didn't actually find this one in gregoriotex-write.c, classified it here based on it’s related function GreAdjustThirdLine
+Macro to call before first syllable, but after \verb=\GreSetInitialClef=.
+
+\macroname{\textbackslash GreAdjustThirdLine}{}{gregoriotex-main.tex}
+Macro to call during the second line.
+
+\macroname{\textbackslash GreAugmentumDuplex}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro for typesetting an augmentum duplex (a pair of punctum mora)
+
+\begin{argtable}
+ \#1 & integer & Height number for first punctum mora.\\
+ \#2 & integer & Height number for second punctum mora.\\
+ \#3 & integer & First punctum mora occurs before last note of a podatus, prorectus, or toculus resupinus (1), or not (0).\\
+\end{argtable}
+
+\macroname{\textbackslash GreBarBrace}{\#1}{gregoriotex-signs.tex}
+Macro for typesetting a bar brace.
+
+\begin{argtable}
+ \#1 & string & Type of glyph the episemus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreBarSyllable}{\#1\#2\#3\#4\#5\#6\#7\#8\#9}{gregoriotex-syllable.tex}
+Macro for typesetting a bar syllable.
+
+\begin{argtable}
+ \#1 & string & First part of syllable text associated with the bar.\\
+ \#2 & string & Middle part of the syllable text associated with the bar.\\
+ \#3 & string & End part of the syllable text associated with the bar.\\
+ \#4 & & Not used.\\
+ \#5 & \TeX\ code & Code to execute before calculating \texttt{nextbegindifference}.\\
+ \#6 & & Not used.\\
+ \#7 & $0 <$ integer $< 19$ & the type of notes alignment. See \nameref{notesalign}.\\
+ & $20 <$ integer $< 39$ & Same as below 20 except there is a flat before the notes. Subtract 20 to get the type of notes alignment.\\
+ & $40 <$ integer $< 59$ & Same as below 20 except there is a natural before the notes. Subtract 40 to get the type of notes alignment.\\
+ \#8 & \TeX\ code & Code to execute before printing anything.\\
+ \#9 & \TeX\ code & The bar line (usually a \textit{writebar} call).
+\end{argtable}
+
+\macroname{\textbackslash GreBarVEpisemus}{\#1}{gregoriotex-signs.tex}
+Macro to typeset a vertical episemus around a bar.
+
+\begin{argtable}
+ \#1 & string & Type of glyph the episemus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreBeginEUOUAE}{}{gregoriotex-main.tex}
+Macro to mark the beginning of a EUOUAE block. Alters spacings and prohibits a line break until the end of the block.
+
+\macroname{\textbackslash GreBeginNLBArea}{\#1\#2}{gregoriotex-main.tex}
+Macro called at beginning of a no line break area.
+
+\begin{argtable}
+ \#1 & 0 & Not in the neumes.\\
+ & 1 & In the neumes.\\
+ \#2 & 0 & Call didn't come from translation centering.\\
+ & 1 & Call came from translation centering.
+\end{argtable}
+
+\macroname{\textbackslash GreBeginNotes}{}{gregoriotex.tex}
+Macro to draw the staff lines. Comes after the initial but before the clef.
+
+\macroname{\textbackslash GreBold}{\#1}{gregoriotex.sty and gregoriotex.tex}
+Makes argument bold. Accesses \LaTeX\ \verb=\textbf= (\textit{gregoriotex.sty}) or Plain\TeX\ \verb=\bf= (\textit{gregoriotex.tex}) as appropriate. Corresponds to ``<b></b>'' tags in gabc.
+
+\begin{argtable}
+ \#1 & string & Text to be typeset in bold.\\
+\end{argtable}
+
+\macroname{\textbackslash GreChangeClef}{\#1\#2\#3\#4}{gregoriotex-signs.tex}
+Macro called when key changes
+
+\begin{argtable}
+ \#1 & character & Type of new clef (c or f).\\
+ \#2 & integer & Line of new clef.\\
+ \#3 & 0 & Print space before clef.\\
+ & 1 & Do not print space before clef.\\
+ \#4 & integer & Height number of flat in key (`0' for no flat).\\
+\end{argtable}
+
+\macroname{\textbackslash GreCirculus}{\#1\#2}{gregoriotex-signs.tex}
+Macro for typesetting a circulus.
+
+\begin{argtable}
+ \#1 & integer & Height number of circulus.\\
+ \#2 & string & Type of glyph the circulus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreColored}{\#1}{gregoriotex.sty and gregoriotex.tex}
+Colors argument (a string) in \verb=gregoriocolor.= Corresponds to ``<c></c>'' tags in gabc. Does nothing in Plain\TeX\ because color is not supported there.
+
+\macroname{\textbackslash GreCPVirgaReversaAscendensOnDLine}{\#1}{gregoriotex-main.tex}
+Allows the Dominican rule set to force long stems to be used for virga
+reversa ascendens neumes on the ``d'' (lowest) line. This macro is
+defined and re-defined by the \verb=\gresetgregoriofont= macro.
+
+\begin{argtable}
+ \#1 & \TeX{} code & The \TeX{} code to use when long stems are not forced.\\
+\end{argtable}
+
+\macroname{\textbackslash GreCP...}{}{gregoriotex-main.tex}
+A class of macros which point to the individual characters in a Gregoiro\TeX\ compatible font. This class of macros is dynamically mapped from the glyph names embedded in the \texttt{ttf} file via a Lua script to ensure that the code points match up with the installed font.
+
+\macroname{\textbackslash GreCustos}{\#1}{gregoriotex-signs.tex}
+Typesets a custos.
+
+\begin{argtable}
+ \#1 & integer & Height number of custos.\\
+\end{argtable}
+
+\macroname{\textbackslash GreDagger}{}{gregoriotex-symbols.tex}
+Macro to typeset a dagger (\GreDagger).
+
+\macroname{\textbackslash GreDiscretionary}{\#1\#2}{gregoriotex-signs.tex}
+A GregorioTeX specific discretionary used to avoid clef change at beginning or end of line, or even with more complex data (z0::c3 for instance). We require a special function because in the normal discretionary function you cannot use \verb=\hskip= (but you can use \verb=\kern=) and you cannot use \verb=\penalty= (which is useless indeed). This macro corrects for these two limitations.
+
+\macroname{\textbackslash GreDivisioFinalis}{\#1}{gregoriotex-signs.tex}
+Macro to typeset a divisio finalis.
+
+\begin{argtable}
+ \#1 & code & Macros which may happen before the skip but after the divisio finalis (typically \verb=\grevepisemus=).\\
+\end{argtable}
+
+\macroname{\textbackslash GreDivisioMaior}{\#1}{gregoriotex-signs.tex}
+Macro to typeset a divisio maior.
+
+\begin{argtable}
+ \#1 & code & Macros which may happen before the skip but after the divisio maior (typically \verb=\grevepisemus=).\\
+\end{argtable}
+
+\macroname{\textbackslash GreDivisioMinima}{\#1}{gregoriotex-signs.tex}
+Macro to typeset a divisio minima.
+
+\begin{argtable}
+ \#1 & code & Macros which may happen before the skip but after the divisio minima (typically \verb=\grevepisemus=).\\
+\end{argtable}
+
+\macroname{\textbackslash GreDivisioMinor}{\#1}{gregoriotex-signs.tex}
+Macro to typeset a divisio minor.
+
+\begin{argtable}
+ \#1 & code & Macros which may happen before the skip but after the divisio minor (typically \verb=\grevepisemus=).\\
+\end{argtable}
+
+\macroname{\textbackslash GreDominica}{\#1\#2}{gregoriotex-signs.tex}
+Macro to typeset a dominican bar.
+
+\begin{argtable}
+ \#1 & integer 1-- 6& Type of dominican bar. Corresponds to bar types 6--11 in \verb=\grewritebar=.\\
+ \#2 & code & Macros which may happen before the skip but after the divisio dominica (typically \verb=\grevepisemus=).\\
+\end{argtable}
+
+\macroname{\textbackslash GreEndEUOUAE}{\#1}{gregoriotex-main.tex}
+Macro to mark the end of a EUOUAE block.
+
+\begin{argtable}
+ \#1 & 0 & ending element\\
+ & 1 & ending syllable\\
+ & 2 & ending score\\
+ & 3 & before bar
+\end{argtable}
+
+\macroname{\textbackslash GreEndOfElement}{\#1\#2}{gregoriotex-main.tex}
+Macro to end elements.
+
+\begin{argtable}
+ \#1 & 0 & Default space.\\
+ & 1 & Larger space.\\
+ & 2 & Glyph space.\\
+ & 3 & Zero-width space.\\
+ \#2 & 0 & Space is breakable.\\
+ & 1 & Space is unbreakable.\\
+\end{argtable}
+
+\macroname{\textbackslash GreEndNLBArea}{\#1\#2}{gregoriotex-main.tex}
+Macro to end a no line break area.
+
+\begin{argtable}
+ \#1 & 0 & ending element\\
+ & 1 & ending syllable\\
+ & 2 & ending score\\
+ & 3 & before bar\\
+ \#2 & 0 & ??\\ %I can’t tell what this flag is for
+ & else & ??
+\end{argtable}
+
+\macroname{\textbackslash GreEndOfGlyph}{\#1}{gregoriotex-main.tex}
+Macro to end a glyph without ending the element.
+
+\begin{argtable}
+ \#1 & 0 & Default space.\\
+ & 1 & Zero-width space.\\
+ & 2 & Space between flat or natural and a note.\\
+ & 3 & Space between two puncta inclinata.\\
+ & 4 & Space between bivirga or trivirga.\\
+ & 5 & space between bistropha or tristropha.\\
+ & 6 & Space after a punctum mora XXX: not used yet, not so sure it is a good idea\ldots\\
+ & 7 & Space between a punctum inclinatum and a punctum inclinatum debilis.\\
+ & 8 & Space between two puncta inclinata debilis.\\
+ & 9 & Space before a punctum (or something else) and a punctum inclinatum.\\
+ & 10 & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd).\\
+ & 11 & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or more).\\
+\end{argtable}
+
+\macroname{\textbackslash GreFinalDivisioFinalis}{\#1}{gregoriotex-signs.tex}
+Macro to end a score with a divisio finalis.
+
+\begin{argtable}
+ \#1 & 0 & Something does not need to be placed after the divisio finalis.\\
+ & 1 & Something needs to be placed after the divisio finalis.\\
+\end{argtable}
+
+\macroname{\textbackslash GreFinalDivisioMaior}{\#1}{gregoriotex-signs.tex}
+Macro to end a score with a divisio maior.
+
+\begin{argtable}
+ \#1 & 0 & Something does not need to be placed after the divisio maior.\\
+ & 1 & Something needs to be placed after the divisio maior.\\
+\end{argtable}
+
+\macroname{\textbackslash GreFirstSyllable}{\{\#1\}}{gregoriotex-syllble.tex}
+A macro which is called with the text of the first syllable, excluding the
+initial of the score. This macro may be redefined to style the first syllable
+appropriately. This macro may be called up to three times: for the letters
+before the centered letters, for the centered letters, and for the letters
+after the centered letters.
+
+\begin{argtable}
+ \#1 & string & Text from the first syllable.
+\end{argtable}
+
+\macroname{\textbackslash GreFirstSyllableInitial}{\{\#1\}}{gregoriotex-syllble.tex}
+A macro which is called with the first letter of the first syllable which is
+not the initial of the score. If the \texttt{initial-style} is \texttt{0}, the
+first letter of the syllable will be passed. If the \texttt{initial-style} is
+\texttt{1} or \texttt{2}, the \emph{second} letter will be passed. This macro
+may be redefined to style the first letter appropriately.
+
+\begin{argtable}
+ \#1 & string & The first letter of the first syllable which is not the
+ initial of the score.
+\end{argtable}
+
+\macroname{\textbackslash GreFlat}{\#1\#2}{gregoriotex-signs.tex}
+Macro to typeset a flat.
+
+\begin{argtable}
+ \#1 & integer & Height number of the flat.\\
+ \#2 & 0 & No flat for a key change.\\
+ & 1 & Indicates the flat for a key change.\\
+\end{argtable}
+
+\macroname{\textbackslash GreFuseTwo}{\#1\#2}{gregoriotex-main.tex}
+Macro for fusing two glyphs to create a larger neume.
+
+\begin{argtable}
+ \#1 & Gregorio\TeX\ glyph & The first glyph in the sequence.\\
+ \#2 & Gregorio\TeX\ glyph & The second.
+\end{argtable}
+
+\macroname{\textbackslash GreGlyph}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-syllable.tex}
+Macro to typeset a glyph.
+
+\begin{argtable}
+ \#1 & character & the character that it must call\\
+ \#2 & integer & The number for where the glyph is located. \texttt{a} in gabc is 1, \texttt{b} is 2, \etc\\
+ \#3 & integer & height number of the next note\\
+ \#4 & 0 & One-note glyph or more than two notes glyph except porrectus: \ie, we must put the aligncenter in the middle of the first note\\
+ & 1 & Two notes glyph (podatus is considered as a one-note glyph): \ie, we put the aligncenter in the middle of the glyph\\
+ & 2 & Porrectus: has a special align center.\\
+ & 3 & initio-debilis : same as 1 but the first note is much smaller\\
+ & 4 & case of a glyph starting with a quilisma\\
+ & 5 & case of a glyph starting with an oriscus\\
+ & 6 & case of a punctum inclinatum\\
+ & 7 & case of a stropha\\
+ & 8 & flexus with an ambitus of one\\
+ & 9 & flexus deminutus\\
+ \#5 & \TeX\ code & signs to typeset before the glyph (typically additional bars, as they must be "behind" the glyph)\\
+ \#6 & \TeX\ code & signs to typeset after the glyph (almost all signs)\\
+ \#7 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled
+\end{argtable}
+
+\macroname{\textbackslash GreGlyphHeights}{\#1\#2}{gregoriotex-syllable.tex}
+Passes the glyph height limits. Currently does nothing, but will eventually be part of dynamic vertical spacing.
+
+\begin{argtable}
+ \#1 & integer & the high height\\
+ \#2 & integer & the low height
+\end{argtable}
+
+\macroname{\textbackslash GregorioTeXAPIVersion}{\#1}{gregoriotex-main.tex}
+Checks to see if Gregorio\TeX\ API is version specified by argument (and
+therefore compatible with the score.
+
+\begin{argtable}
+ \#1 & string & Version number for Gregorio\TeX.\\
+\end{argtable}
+
+\macroname{\textbackslash GreHEpisemus}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex}
+Macro to typeset a episemus.
+
+\begin{argtable}
+ \#1 & integer & Height number of the episemus.\\
+ \#2 & string & See \nameref{EpisemusSpecial}.\\
+ \#3 & integer & The ambitus for a two note episemus at the diagonal stroke of a
+ porrectus, porrectus flexus, orculus resupinus, or torculus resupinus
+ flexus.\\
+ \#4 & 0 & an horizontal episemus\\
+ & 1 & an horizontal episemus under a note\\
+ & 2 & a line at the top\\
+ & 3 & a line at the bottom\\
+ \#5 & f & a normal episemus\\
+ & l & a small episemus aligned left\\
+ & c & a small episemus aligned center\\
+ & r & a small episemus aligned right\\
+ \#6 & integer & Replacement for \#1 if a bridge causes a height substitution.\\
+\end{argtable}
+
+\macroname{\textbackslash GreHEpisemusBridge}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro to typeset a bridge episemus father the last note of a glyph
+(element, syllable) if the next episemus is at the same height.
+
+\begin{argtable}
+ \#1 & integer & Height number of the episemus.\\
+ \#2 & 0 & Episemus above the note.\\
+ & 1 & Episemus below the note.\\
+ \#3 & 0 & Default space.\\
+ & 1 & Zero-width space.\\
+ & 2 & Space between flat or natural and a note.\\
+ & 3 & Space between two puncta inclinata.\\
+ & 4 & Space between bivirga or trivirga.\\
+ & 5 & space between bistropha or tristropha.\\
+ & 6 & Space after a punctum mora XXX: not used yet, not so sure it is a good idea\ldots\\
+ & 7 & Space between a punctum inclinatum and a punctum inclinatum debilis.\\
+ & 8 & Space between two puncta inclinata debilis.\\
+ & 9 & Space before a punctum (or something else) and a punctum inclinatum.\\
+ & 10 & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd).\\
+ & 11 & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or more).
+\end{argtable}
+
+\macroname{\textbackslash GreHighChoralSign}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro for typesetting high choral signs.
+
+\begin{argtable}
+ \#1 & integer & Height number of the sign.\\
+ \#2 & string & The choral sign.\\
+ \#3 & 0 & Choral sign does not occur before last note of podatus, porrectus, or torculus resupinus.\\
+ & 1 & Choral sign occurs before last note of podatus, porrectus, or torculus resupinus.\\
+\end{argtable}
+
+\macroname{\textbackslash GreHyph}{}{gregoriotex-main.tex}
+Macro used for end of line hyphens. Defaults to \verb=\grenormalhyph=.
+
+\macroname{\textbackslash GreInDivisioFinalis}{\#1}{gregoriotex-signs.tex}
+Same as \verb=\GreDivisioFinalis= except inside a syllable.
+
+\macroname{\textbackslash GreInDivisioMaior}{\#1}{gregoriotex-signs.tex}
+Same as \verb=\GreDivisioMaior= except inside a syllable.
+
+\macroname{\textbackslash GreInDivisioMinima}{\#1}{gregoriotex-signs.tex}
+Same as \verb=\GreDivisioMinima= except inside a syllable.
+
+\macroname{\textbackslash GreInDivisioMinor}{\#1}{gregoriotex-signs.tex}
+Same as \verb=\GreDivisioMinor= except inside a syllable.
+
+\macroname{\textbackslash GreInDominica}{\#1\#2}{gregoriotex-signs.tex}
+Same as \verb=\GreDominica= except inside a syllable.
+
+\macroname{\textbackslash GreInVirgula}{\#1\#2}{gregoriotex-signs.tex}
+Same as \verb=\GreVirgula= except inside a syllable.
+
+\macroname{\textbackslash GreItalic}{\#1}{gregoriotex.sty or gregoriotex.tex}
+Makes argument (a string) italic. Accesses \LaTeX\ \verb=\textit= or
+Plain\TeX\ \verb=\it= as appropriate. Corresponds to ``<i></i>'' tags
+in gabc.
+
+\begin{argtable}
+ \#1 & string & Text to be typeset in italic font.\\
+\end{argtable}
+
+\macroname{\textbackslash GreLastOfLine}{}{gregoriotex-main.tex}
+Macro to set \verb=\gre@lastoflinecount= to 1 (\ie, mark that this syllable is the last of the line).
+
+\macroname{\textbackslash GreLastOfScore}{}{gregoriotex-main.tex}
+Macro to mark the syllable as the last of the score.
+
+\macroname{\textbackslash GreLinea}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro for typesetting a linea.
+
+\begin{argtable}
+ \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\
+ \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\
+ \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\
+\end{argtable}
+
+\macroname{\textbackslash GreLineaPunctumCavum}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex}
+Macro to typeset a linea punctum cavum.
+
+\begin{argtable}
+ \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\
+ \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\
+ \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\
+ \#4 & \TeX\ code & Macros executed before the punctum cavum is written.\\
+ \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\
+ \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled.
+\end{argtable}
+
+\macroname{\textbackslash GreLowChoralSign}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro for typesetting low choral signs.
+
+\begin{argtable}
+ \#1 & integer & Height number of the sign.\\
+ \#2 & string & The choral sign.\\
+ \#3 & 0 & Choral sign does not occur before last note of podatus, porrectus, or torculus resupinus.\\
+ & 1 & Choral sign occurs before last note of podatus, porrectus, or torculus resupinus.\\
+\end{argtable}
+
+\macroname{\textbackslash GreManualCustos}{\#1}{gregoriotex-signs.tex}
+Macro to typeset a custos manually.
+
+\begin{argtable}
+ \#1 & integer & height number of the custos.
+\end{argtable}
+
+\macroname{\textbackslash GreMode}{\#1}{gregoriotex-main.tex}
+If the gabc file contains a mode in the header, then this function
+places said mode as the first (top) annotation. If the user has
+manually added a first annotation in the \TeX\ file, then this
+function does nothing. Also, if the \texttt{annotation} header field
+is used, then this function does nothing.
+
+\begin{argtable}
+ \#1 & 1--8 & The mode. Other values are ignored.\\
+\end{argtable}
+
+\macroname{\textbackslash GreNatural}{\#1\#2}{gregoriotex-signs.tex}
+Macro to typeset a natural.
+
+\begin{argtable}
+ \#1 & integer & Height number of the natural.\\
+ \#2 & 0 & No flat for a key change.\\
+ & 1 & Indicates the flat for a key change.\\
+\end{argtable}
+
+\macroname{\textbackslash GreNewLine}{}{gregoriotex-main.tex}
+Macro to call if you want to go to the next line.
+
+\macroname{\textbackslash GreNewParLine}{}{gregoriotex-main.tex}
+Same as \verb=\GreNewLine= except line is not justified.
+
+\macroname{\textbackslash GreNextCustos}{\#1}{gregoriotex-signs.tex}
+Sets the pitch to use for the next custos if it were to happen at the point
+where this macro is called.
+
+\begin{argtable}
+ \#1 & integer & Height number of the custos.\\
+\end{argtable}
+
+\macroname{\textbackslash GreNoInitial}{}{gregoriotex-main.tex}
+Macro called when no initial is being set.
+
+\macroname{\textbackslash GreOverBrace}{\#1\#2\#3\#4}{gregoriotex-signs.tex}
+Macro to typeset a round brace above the lines.
+
+\begin{argtable}
+ \#1 & length & The width of the brace.\\
+ \#2 & length & A vertical shift.\\
+ \#3 & length & A horizontal shift.\\
+ \#4 & 0 & Don't shift before starting the brace.\\
+ & 1 & Shift back a punctum's width before starting the brace.
+\end{argtable}
+
+\macroname{\textbackslash GreOverCurlyBrace}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex}
+Macro to typeset a curly brace above the lines.
+
+\begin{argtable}
+ \#1 & length & The width of the brace.\\
+ \#2 & length & A vertical shift.\\
+ \#3 & length & A horizontal shift.\\
+ \#4 & 0 & Don't shift before starting the brace.\\
+ & 1 & Shift back a punctum's width before starting the brace.\\
+ \#5 & 0 & No accentus above the brace.\\
+ & 1 & Typeset an accentus above the brace.
+\end{argtable}
+
+\macroname{\textbackslash GrePunctumCavum}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex}
+Macro to typeset a punctum cavum.
+
+\begin{argtable}
+ \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\
+ \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\
+ \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\
+ \#4 & \TeX\ code & Macros executed before the punctum cavum is written.\\
+ \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\
+ \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled.
+\end{argtable}
+
+\macroname{\textbackslash GrePunctumCavumInclinatum}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex}
+Macro to typeset a punctum cavum inclinatus.
+
+\begin{argtable}
+ \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\
+ \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\
+ \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\
+ \#4 & \TeX\ code & Macros executed before the punctum cavum is written.\\
+ \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\
+ \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled.
+\end{argtable}
+
+\macroname{\textbackslash GrePunctumCavumInclinatumAuctus}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex}
+Macro to typeset a punctum cavum inclinatus auctus.
+
+\begin{argtable}
+ \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\
+ \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\
+ \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\
+ \#4 & \TeX\ code & Macros executed before the punctum cavum is written.\\
+ \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\
+ \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled.
+\end{argtable}
+
+\macroname{\textbackslash GrePunctumMora}{\#1\#2\#3\#4}{gregoriotex-signs.tex}
+Macro for typesetting punctum mora.
+
+\begin{argtable}
+ \#1 & integer & Height number of punctum mora.\\
+ \#2 & 1 & Go back to end of punctum.\\
+ & 2 & Shift left width of 1 punctum.\\
+ & 3 & Shift left width of 1 punctum and ambitus of 1.\\
+ \#3 & 0 & Punctum mora does not occur before last note of podatus, porrectus, or torculus resupinus.\\
+ & 1 & Punctum mora occurs before last note of podatus, porrectus, or torculus resupinus.\\
+ \#4 & 0 & No punctum inclinatum.\\
+ & 1 & Punctum inclinatum.\\
+\end{argtable}
+
+\macroname{\textbackslash GreReversedAccentus}{\#1\#2}{gregoriotex-signs.tex}
+Macro for typesetting a reversed accentus.
+
+\begin{argtable}
+ \#1 & integer & Height number of accentus.\\
+ \#2 & string & Type of glyph the accentus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreReversedSemicirculus}{\#1\#2}{gregoriotex-signs.tex}
+Macro for typesetting a reversed semicirculus.
+
+\begin{argtable}
+ \#1 & integer & Height number of semicirculus.\\
+ \#2 & string & Type of glyph the semicirculus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreScoreReference}{\#1}{gregoriotex-main.tex}
+Currently does nothing.
+
+\macroname{\textbackslash GreSemicirculus}{\#1\#2}{gregoriotex-signs.tex}
+Macro for typesetting a semicirculus.
+
+\begin{argtable}
+ \#1 & integer & Height number of semicirculus.\\
+ \#2 & string & Type of glyph the semicirculus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreSetBigInitial}{}{gregoriotex-main.tex}
+Macro which indicates that a 2-line initial is desired.
+
+\macroname{\textbackslash GreSetFixedNextTextFormat}{\#1}{gregoriotex-syllable.tex}
+Same as \verb=\GreSetFixedTextFormat= except for next syllable.
+
+\macroname{\textbackslash GreSetFixedTextFormat}{\#1}{gregoriotex-syllable.tex}
+Macro to specify a text which is different from \verb=#1#2#3= (of \verb=\GreSyllable=). It is useful for styles, for instance with:
+\par\medskip
+\begin{gabccode}
+ <i>ffj</i>(gh)
+\end{gabccode}
+
+we will have
+
+\begin{latexcode}
+ #1 = \textit{f}
+ #2 = \textit{f}
+ #3 = \textit{j}
+\end{latexcode}
+
+and thus \verb=#1#2#3= will be \verb=\textit{f}\textit{f}\textit{j}=, which won't typeset
+ligatures. In this example we should call \verb=\grefixedtext{\textit{ffj}}=.
+
+\begin{argtable}
+ \#1 & 0 & nothing (normal text)\\
+ & 1& italic\\
+ & 2 & bold\\
+ & 3 & small caps\\
+ & 4 & typewriter\\
+ & 5 & underline
+\end{argtable}
+
+\macroname{\textbackslash GreSetInitial}{\#1}{gregoriotex-main.tex}
+Macro to set the initial in the score.
+
+\begin{argtable}
+ \#1 & character & The initial letter of the score.\\
+\end{argtable}
+
+\macroname{\textbackslash GreSetInitialClef}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro for writing initial key.
+
+\begin{argtable}
+ \#1 & \texttt{c} or \texttt{f} & Type of clef.\\
+ \#2 & 1--4 & Line of key.\\
+ \#3 & integer & Height number of flat in key (\texttt{0} for no flat).\\
+\end{argtable}
+
+\macroname{\textbackslash GreSetLinesClef}{\#1\#2\#3\#4}{gregoriotex-main.tex}
+Macro to define the clef that will appear at the beginning of the lines.
+
+\begin{argtable}
+ \#1 & \texttt{c} or \texttt{f} & Type of clef.\\
+ \#2 & 1--4 & Line of key.\\
+ \#3 & 0 & No space after clef.\\
+ & 1 & Space after clef.\\
+ \#4 & integer & Height of flat in key (\texttt{0} for no flat).\\
+\end{argtable}
+
+\macroname{\textbackslash GreSetNextSyllable}{\#1\#2\#3}{gregoriotex-syllable.tex}
+Macro to set the text of the next syllable for spacing purposes.
+
+\begin{argtable}
+ \#1 & string & the first letters of the syllable, that don't count for the alignment\\
+ \#2 & string & the middle letters of the syllable, we must align in the middle of them\\
+ \#3 & string & the end letters, they don't count for alignment\\
+\end{argtable}
+
+\macroname{\textbackslash GreSetTextAboveLines}{\#1}{gregoriotex-main.tex}
+Macro to place argument above the lines and empty
+\verb=\gre@currenttextabovelines= when done.
+
+\begin{argtable}
+ \#1 & string & Text to be placed above the lines.\\
+\end{argtable}
+
+\macroname{\textbackslash GreSharp}{\#1\#2}{gregoriotex-signs.tex}
+Macro to typeset a sharp.
+
+\begin{argtable}
+ \#1 & integer & Height number of the sharp.\\
+ \#2 & 0 & No flat for a key change.\\
+ & 1 & Indicates the flat for a key change.\\
+\end{argtable}
+
+\macroname{\textbackslash GreSmallCaps}{\#1}{gregoriotex.sty and gregoriotex.tex}
+Makes argument small capitals. Accesses \LaTeX\ \verb=\textsc= or
+Plain\TeX\ \verb=\sc= as appropriate Corresponds to ``<sc></sc>'' tags
+in gabc.
+
+\begin{argtable}
+ \#1 & string & Text to be typeset in small caps font.\\
+\end{argtable}
+
+\macroname{\textbackslash GreStar}{}{gregoriotex-symbol.tex}
+Macro to typeset an asterisk (\GreStar).
+
+\macroname{\textbackslash GreSyllable}{\#1\#2\#3\#4\#5\#6\#7\#8\#9}{gregoriotex-syllable.tex}
+Macro to typeset the syllable.
+
+\begin{argtable}
+ \#1 & string & the first letters of the syllable, that don't count for the alignment\\
+ \#2 & string & the middle letters of the syllable, we must align in the middle of them\\
+ \#3 & string & the end letters, they don't count for alignment\\
+ \#4 & 0 & this syllable is not the end of a word\\
+ & 1 & this syllable is the end of a word\\
+ \#5 & \TeX\ code & macros setting next syllable letters of the next syllable\\
+ \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled\\
+ \#7 & & alignment type of the first next glyph\\
+ \#8 &\TeX\ code & other macros (translation, double text, etc.) that don't fit in the limitation of the number of arguments\\
+ \#9 & Gregorio\TeX\ glyphs & all the notes
+\end{argtable}
+
+\macroname{\textbackslash GreTilde}{}{gregoriotex-main.tex}
+Macro to print $\sim$.
+
+\macroname{\textbackslash GreTranslationCenterEnd}{}{gregoriotex-main.tex}
+Macro to end the centering of the translation text.
+
+\macroname{\textbackslash GreTypewriter}{\#1}{gregoriotex.sty and gregoriotex.tex}
+Makes argument typewriter font. Accesses \LaTeX\ \verb=\texttt= or
+Plain\TeX\ \verb=\tt= as appropriate.
+
+\begin{argtable}
+ \#1 & string & Text to typeset in typewriter font.\\
+\end{argtable}
+
+\macroname{\textbackslash GreUnderBrace}{\#1\#2\#3\#4}{gregoriotex-signs.tex}
+Macro to typeset a round brace below the lines.
+
+\begin{argtable}
+ \#1 & length & The width of the brace.\\
+ \#2 & length & A vertical shift.\\
+ \#3 & length & A horizontal shift.\\
+ \#4 & 0 & Don't shift before starting the brace.\\
+ & 1 & Shift back a punctum's width before starting the brace.
+\end{argtable}
+
+\macroname{\textbackslash GreUnderline}{\#1}{gregoriotex.sty and gregoriotex.tex}
+Makes argument underlined under \LaTeX\ using \verb=\underline=. Does
+nothing in Plain\TeX.
+
+\begin{argtable}
+ \#1 & string & Text to typeset underlined.\\
+\end{argtable}
+
+\macroname{\textbackslash GreVarBraceLength}{\#1}{gregoriotex-signs.tex}
+Returns the computed length of the given brace.
+
+\begin{argtable}
+ \#1 & string & unique identifier for the brace within the score.
+\end{argtable}
+
+\macroname{\textbackslash GreVarBraceSavePos}{\#1\#2\#3}{gregoriotex-signs.tex}
+Records positions to compute the lengths of variable-sized braces.
+
+\begin{argtable}
+ \#1 & string & unique identifier for the brace within the score.\\
+ \#2 & 0 & Don't shift before recording the position.\\
+ & 1 & Shift back a punctum's width before recording the position.\\
+ \#3 & 1 & Position to save is the start of brace.\\
+ & 2 & Position to save is the end of brace.
+\end{argtable}
+
+\macroname{\textbackslash GreVEpisemus}{\#1\#2}{gregoriotex-signs.tex}
+Macro for typesetting the vertical episemus.
+
+\begin{argtable}
+ \#1 & integer & Height number of episemus.\\
+ \#2 & string & Type of glyph the episemus is attached to. See \nameref{EpisemusSpecial} argument for description of options.\\
+\end{argtable}
+
+\macroname{\textbackslash GreVirgula}{\#1}{gregoriotex-signs.tex}
+Macro to typeset a virgula.
+
+\begin{argtable}
+ \#1 & code & Macros which may happen before the skip but after the virgula (typically \verb=\grevepisemus=).\\
+\end{argtable}
+
+\macroname{\textbackslash GreWriteTranslation}{\#1}{gregoriotex-main.tex}
+Macro to typeset argument in the translation position.
+
+\begin{argtable}
+ \#1 & string & Text to typeset in the translation.\\
+\end{argtable}
+
+\macroname{\textbackslash GreWriteTranslationWithCenterBeginning}{\#1}{gregoriotex-main.tex}
+Macro to typeset argument (a string) in the translation position (at
+the beginning of a line?).
+
+\begin{argtable}
+ \#1 & string & Text to typeset in the translation (at the beginning of a line).\\
+\end{argtable}
+
+\macroname{\textbackslash GreZeroHyph}{}{gregoriotex-main.tex}
+Macro to typeset a zero-width hyphen (the hyphen is visible, it is only
+treated as if it had 0 width). Used for fine tuning spacing
+(especially at line endings).
+
+\macroname{\textbackslash GreForceBreak}{}{gregoriotex-spaces.tex}
+Macro used to force a line break to occur at a given position.
+
+\macroname{\textbackslash GreNoBreak}{}{gregoriotex-spaces.tex}
+Macro used to prevent a line break from occurring at a given position.
+
+\macroname{\textbackslash GreScoreId}{}{gregoriotex-main.tex}
+A Lua\TeX\ attribute which designates a unique identifier for each score.
+
+\macroname{\textbackslash GreNABCNeumes}{\#1\#2}{gregoriotex-nabc.tex}
+Macro to print a nabc character above the lines.
+
+\begin{argtable}
+ \#1 & int & the line on which the character should appear (currently unused)\\
+ \#2 & string & The \texttt{nabc} syntax which indicates what neumes are to be printed\\
+\end{argtable}
+
+\macroname{\textbackslash GreNABCChar}{\#1}{gregoriotex-nabc.tex}
+Macro to print a nabc character.
+
+\begin{argtable}
+ \#1 & string & The \texttt{nabc} syntax which indicates what neumes are to be printed\\
+\end{argtable}
+
+\macroname{\textbackslash GreScoreNABCLines}{\#1}{gregoriotex-nabc.tex}
+Macro which sets the number of \texttt{nabc} lines in the score.
+
+\begin{argtable}
+ \#1 & int & the number of \texttt{nabc} lines (currently only 1 is supported)\\
+\end{argtable}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "GregorioRef"
+%%% End:
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_internal.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_internal.tex
new file mode 100644
index 00000000000..5cc1f31924c
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Command_Index_internal.tex
@@ -0,0 +1,1587 @@
+% !TEX root = GregorioRef.tex
+% !TEX program = LuaLaTeX+se
+\section{Gregorio\TeX{} Controls}
+
+These functions are the ones used by Gregorio\TeX{} internally as it
+process the commands listed above. They should not appear in any user
+document and are listed here for programmer documentation purposes
+only.
+
+\macroname{\textbackslash gre@error}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Prints an error to the \TeX\ output log.
+
+\begin{argtable}
+ \#1 & string & error message\\
+\end{argtable}
+
+
+\macroname{\textbackslash gre@warning}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Prints a warning to the \TeX\ output log.
+
+\begin{argtable}
+ \#1 & string & warning message\\
+\end{argtable}
+
+\macroname{\textbackslash gre@metapost}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Executes \MP{} commands using luamplib.
+
+\begin{argtable}
+ \#1 & \MP{} commands & The \MP{} commands to execute.
+\end{argtable}
+
+\macroname{\textbackslash gre@deprecated}{\#1\#2}{gregoriotex-main.tex}
+Macro that handles deprecation messages. By default, deprecated macros
+are allowed and a warning is printed. If the package option
+\texttt{deprecated=false} is set, then deprecated macros raise a
+package error, halting \TeX.
+
+\begin{argtable}
+ \#1 & string & name of the deprecated macro\\
+ \#2 & string & name of the correct macro to use\\
+\end{argtable}
+
+\macroname{\textbackslash gre@obsolete}{\#1\#2}{gregoriotex-main.tex}
+Macro that handles obsolescence errors.
+
+\begin{argtable}
+ \#1 & string & name of the obsolete macro\\
+ \#2 & string & name of the correct macro to use\\
+\end{argtable}
+
+\macroname{\textbackslash gre@loadgregoriofont}{}{gregoriotex-main.tex}
+Loads the chosen font for the neumes at the correct size.
+
+\macroname{\textbackslash gre@calculate@constantglyphraise}{}{gregoriotex-spaces.tex}
+Macro to calculate \verb=\gre@constantglyphraise=
+
+\macroname{\textbackslash gre@addtranslationspace}{}{gregoriotex-spaces.tex}
+Macro to tell Gregorio to set space for the translation.
+
+\macroname{\textbackslash gre@removetranslationspace}{}{gregoriotexspaces.tex}
+Macro to tell Gregorio to remove the space allocated to the translation.
+
+\macroname{\textbackslash gre@calculate@additionalspaces}{\#1\#2\#3\#4}{gregoriotex-spaces.tex}
+Macro which calculates \verb=\gre@additionalbottomspace= and\\
+\verb=\gre@additionaltopspace=
+
+\begin{argtable}
+ \#1 & integer & the height number of the top pitch, including signs\\
+ \#2 & integer & the height number of the bottom pitch, including signs\\
+ \#3 & 0 & there is no translation line\\
+ & 1 & there is a translation line\\
+ \#4 & 0 & there is no above lines text\\
+ & 1 & there is above lines text
+ \end{argtable}
+
+\macroname{\textbackslash gre@calculate@textaligncenter}{\#1\#2\#3}{gregoriotex-spaces.tex}
+Macro for calculating \verb=\gre@textaligncenter=.
+
+\begin{argtable}
+ \#1 & string & The first part of the syllable (any preceding consonants in Latin).\\
+ \#2 & string & The middle part of the syllable (the vowel in Latin, the whole syllable in English).\\
+ \#3 & 0 & Calculation is being performed for the current syllable.\\
+ & 1 & Calculation is being performed for the next syllable.\\
+\end{argtable}
+
+\macroname{\textbackslash gre@calculate@annotationtrueraise}{}{gregoriotex-spaces.tex}
+Macro to calculate \verb=\gre@dimen@annotationtrueraise=.
+
+\macroname{\textbackslash gre@calculate@textlower}{}{gregoriotex-spaces.tex}
+Calculates the default value of \texttt{textlower}. Default is \texttt{spacebeneathtext}.
+
+\macroname{\textbackslash gre@calculate@linewidth}{}{gregoriotex-spaces.tex}
+Calculates the default line width. Default is the width of the printable space (\verb=\hsize=).
+
+\macroname{\textbackslash gre@calculate@stafflinewidth}{}{gregoriotex-spaces.tex}
+Calculates the default width of the staff lines. Default is \texttt{linewidth}.
+
+\macroname{\textbackslash gre@calculate@stafflineheight}{}{gregoriotex-spaces.tex}
+Calculates the height (thickness) of the staff lines. Dependent on \texttt{stafflineheightfactor} and \texttt{gre@factor}.
+
+\macroname{\textbackslash gre@calculate@interstafflinespace}{}{gregoriotex-spaces.tex}
+Calculates the distance between the staff lines. Dependent on \texttt{stafflineheight} and \texttt{gre@factor}
+
+\macroname{\textbackslash gre@calculate@stafflinediff}{}{gregoriotex-spaces.tex}
+Calculates a correction factor for when the staff lines are not their default thickness. Dependent on \texttt{stafflineheight} and \texttt{gre@factor}.
+
+\macroname{\textbackslash gre@calculate@staffheight}{}{gregoriotex-spaces.tex}
+Calculates the total height of the staff. Dependent on \texttt{stafflineheight} and \texttt{interstafflinespace}.
+
+\macroname{\textbackslash gre@calculate@constantglyphraise}{}{gregoriotex-spaces.tex}
+Calculates the baseline correction for the glyphs. Dependent on \texttt{gre@factor}, \texttt{additionalbottomspace}, \texttt{spacebeneathtext}, \texttt{spacelinestext}, \texttt{interstafflinespace}, \texttt{stafflineheight}, \texttt{currenttranslationheight}, and \texttt{stafflinediff}.
+
+\macroname{\textbackslash gre@computespaces}{}{gregoriotex-spaces.tex}
+Aggregates all of the global distance calculations and calls them in the order needed to respect dependencies.
+
+\macroname{\textbackslash gre@calculate@glyphraisevalue}{\#1\#2}{gregoriotex-spaces.tex}
+Calculates the raise values for a glyph (glyphraisevalue and addedraisevalue) based on where it is to be placed and what kind of a glyph it is. This is a time of use calculation.
+
+\begin{argtable}
+ \#1 & integer & The number for where the glyph is located. \texttt{a} in gabc is 1, \texttt{b} is 2, \etc\\
+ \#2 & 0 & no modification\\
+ & 1 & puts the value on the interline just above if it is on a line\\
+ & 2 & puts the value on the interline just beneath if it is on a line\\
+ & 3 & case of the vertical episemus, which is not placed at the same place if the corresponding note is on a line or not\\
+ & 4 & case of the punctum mora, for the same reason\\
+ & 5 & case of the horizontal episemus under a note, that must be placed a bit lower if the note is on a line\\
+ & 6 & case of the signs above (accentus, \etc)\\
+ & 8 & case of the punctum mora of the first note of a podatus or the 2nd note of a porrectus, \etc\\
+ & 9 & case of the horizontal episemus, that must be placed a bit lower if the note is on a line\\
+ & 10 & case of the low choral sign\\
+ & 11 & case of the high choral sign\\
+ & 12 & case of the low choral sign which is lower than the note\\
+ & 13 & case of the brace above the bars
+\end{argtable}
+
+\macroname{\textbackslash gre@stafflinefactor}{}{gregoriotex-spaces.tex}
+A number indicating the thickness of the staff lines.
+
+\macroname{\textbackslash gre@scale@stafflinefactor}{}{gregoriotex-spaces.tex}
+Flag indicating whether the stafflinefactor should scale with changes of grefactor (1), or not (0).
+
+\macroname{\textbackslash gre@calculate@textaligncenter}{\#1\#2\#3}{gregoriotex-spaces.tex}
+Macro to calculate the distance from the beginning of the text of a syllable to its alignment point (the center of the vowel for Latin centering, the center of the syllable for English centering). This is a time of use calculation.
+
+\begin{argtable}
+ \#1 & string & the first part of the syllable\\
+ \#2 & string & the middle part of the syllable\\
+ \#3 & 0 & perform this calculation for the current syllable\\
+ & 1 & perform this calculation for the next syllable
+\end{argtable}
+
+\macroname{\textbackslash gre@calculate@enddifference}{\#1\#2\#3\#4\#5}{gregoriotex-spaces.tex}
+Calculates the difference between the end of the notes and the end of the syllable text. Also stores the value for the previous syllable if needed. This is a time of use calculation.
+
+\begin{argtable}
+ \#1 & length & the total width of the notes\\
+ \#2 & length & the total width of the syllable text\\
+ \#3 & length & the alignment distance for the text (\texttt{textaligncenter})\\
+ \#4 & length & the alignment distance for the notes (\texttt{notesaligncenter})\\
+ \#5 & 0 & do not save the value for the previous syllable before calculating the new value\\
+ & 1 & save the value for the previous syllable before calculating the new value
+\end{argtable}
+
+\macroname{\textbackslash gre@changeonedimenfactor}{\#1\#2\#3}{gregoriotex-spaces.tex}
+Change the scale of a single distance from one factor to another.
+
+\begin{argtable}
+ \#1 & string & name of the distance to be scaled. See \nameref{distances}.\\
+ \#2 & integer & the factor the distance is currently in\\
+ \#3 & integer & the factor the distance is to be put into\\
+\end{argtable}
+
+\macroname{\textbackslash gre@changedimenfactor}{\#1\#2}{gregoriotex-spaces.tex}
+Rescales all the distances (and stafflinefactor) which are supposed to scale with a change in factor.
+
+\begin{argtable}
+ \#1 & integer & the factor the distance is currently in\\
+ \#2 & integer & the factor the distance is to be put into\\
+\end{argtable}
+
+\macroname{\textbackslash gre@calculate@nextbegindifference}{\#1\#2\#3\#4}{gregoriotex-spaces.tex}
+Macro to calculate \texttt{nextbegindifference}.
+
+\begin{argtable}
+ \#1 & string & the first letters of the next syllable\\
+ \#2 & string & the middle letters of the next syllable (the vowel in Latin, the whole syllable in English)\\
+ \#3 & string & the end letters of the next syllable\\
+ \#4 & $0 <$ integer $< 19$ & the type of notes alignment. See \nameref{notesalign}.\\
+ & $20 <$ integer $< 39$ & Same as below 20 except there is a flat before the notes. Subtract 20 to get the type of notes alignment.\\
+ & $40 <$ integer $< 59$ & Same as below 20 except there is a natural before the notes. Subtract 40 to get the type of notes alignment.
+\end{argtable}
+
+\macroname{\textbackslash gre@makein}{\#1}{gregoriotex-spaces.tex}
+Strips the decimals and units from a distance.
+
+\begin{argtable}
+ \#1 & distance & should be in the form ``[0-9]+.[0-9]+pt''. (\ie the result of applying \verb=\the= to a distance register)
+\end{argtable}
+
+\macroname{\textbackslash gre@makenum}{\#1}{gregoriotex-spaces.tex}
+Strips the units from a distance.
+
+\begin{argtable}
+ \#1 & distance & should be in the form ``[0-9]+.[0-9]+pt''. (\ie the result of applying \verb=\the= to a distance register)
+\end{argtable}
+
+\macroname{\textbackslash gre@unitfactor}{}{gregoriotex-spaces.tex}
+Temporary count used by \verb=\gre@convertto=.
+
+\macroname{\textbackslash gre@basefactor}{}{gregoriotex-spaces.tex}
+Temporary count used by \verb=\gre@convertto=.
+
+\macroname{\textbackslash gre@count@temp@**}{}{gregoriotex-spaces.tex}
+Temporary count used in calculations. There are currently three of these.
+
+\macroname{\textbackslash gre@convertto}{\#1\#2}{gregoriotex-spaces.tex}
+Macro which converts a distance into a particular set of units. Result is placed in \verb=\gre@converted= as a string.
+
+\begin{argtable}
+ \#1 & string & two letter abbreviation for the units. Should recognize all legal TeX units.\\
+ \#2 & distance & Distance to be converted.
+\end{argtable}
+
+\macroname{\textbackslash gre@converted}{}{gregoriotex-spaces.tex}
+Macro holding result of last call to \verb=\gre@convertto=.
+
+\macroname{\textbackslash gre@consistentunits}{\#1\#2}{gregoriotex-spaces.tex}
+This function takes a distance and formats it as a string so that its units conform to the pattern set by a string representation of a distance. Result is placed in \verb=\gre@stringdist=.
+
+\begin{argtable}
+ \#1 & string & the standard whose format is to be matched.\\
+ \#2 & distance & the distance to be adjusted.
+\end{argtable}
+
+\macroname{\textbackslash gre@stringdist}{}{gregoriotex-spaces.tex}
+Macro holding result of last call to \verb=\gre@consistentunits=.
+
+\macroname{\textbackslash gre@gregorioscore}{\#1}{gregoriotex-main.tex}
+Macro that handles \verb=\gregorioscore= calls when they do not have an
+optional argument.
+
+\begin{argtable}
+ \#1 & string & Relative or absolute path to the score.\\
+\end{argtable}
+
+\macroname{\textbackslash gre@gregorioscore@option}{[\#1]\#2}{gregoriotex-main.tex}
+Macro that handles \verb=\gregorioscore= calls when they have an optional
+argument.
+
+\begin{argtable}
+ \#1 & \texttt{n} & \#2 will be included as is. \\
+ & \texttt{a} & Gregoriotex will automatically compile gabc files if necessary.\\
+ & \texttt{f} & Forces gregoriotex to compile the gabc file.\\
+ \#2 & string & Relative or absolute path to the score.\\
+\end{argtable}
+
+\macroname{\textbackslash gre@gabcsnippet}{\#1}{gregoriotex-main.tex}
+Macro that handles \verb=\gabcsnippet= calls when they do not have an
+optional argument.
+
+\begin{argtable}
+ \#1 & string & Snippet of gabc code.\\
+\end{argtable}
+
+\macroname{\textbackslash gre@gabcsnippet@option}{[\#1]\#2}{gregoriotex-main.tex}
+Macro that handles \verb=\gabcsnippet= calls when they have an optional
+argument.
+
+\begin{argtable}
+ \#1 & int & Value of initial style to be passed to gregorio \\
+ \#2 & string & Snippet of gabc code.\\
+\end{argtable}
+
+\macroname{\textbackslash gre@writemode}{\#1}{gregoriotex-main.tex}
+Macro that writes its argument with \verb=\greannotation=. The
+argument typically is given to this macro by \verb=\GreMode= in the
+gtex file.
+
+\begin{argtable}
+ \#1 & string & Text to place above the initial of a score.\\
+\end{argtable}
+
+\macroname{\textbackslash gre@brace@common}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-signs.tex}
+Common macro used internally to render braces.
+
+\begin{argtable}
+ \#1 & length & The width of the brace.\\
+ \#2 & length & A vertical shift.\\
+ \#3 & length & A horizontal shift.\\
+ \#4 & 0 & Don't shift before starting the brace.\\
+ & 1 & Shift back a punctum's width before starting the brace.\\
+ \#5 & 0 & No accentus above the brace.\\
+ & 1 & Typeset an accentus above the brace.\\
+ \#6 & integer & The height number for the brace.\\
+ \#7 & csname & The control sequence name representing the brace.
+\end{argtable}
+
+\macroname{\textbackslash grebracemetapostpreamble}{\#1}{gregoriotex-signs.tex}
+Returns the \MP{} preamble for braces. The control sequence name does
+not have the \texttt{@} symbol because this macro is used within \MP{}.
+
+\begin{argtable}
+ \#1 & string & the width of the brace; if \texttt{*}, use the bar brace width.
+\end{argtable}
+
+\macroname{\textbackslash gre@draw@curlybrace}{\#1}{gregoriotex-signs.tex}
+Draws a curly over-brace using \MP{}.
+
+\begin{argtable}
+ \#1 & length & the width of the brace.
+\end{argtable}
+
+\macroname{\textbackslash gre@draw@brace}{\#1}{gregoriotex-signs.tex}
+Draws a round over-brace using \MP{}.
+
+\begin{argtable}
+ \#1 & string & the width of the brace; if \texttt{*}, use the bar brace width.
+\end{argtable}
+
+\macroname{\textbackslash gre@draw@underbrace}{\#1}{gregoriotex-signs.tex}
+Draws a round under-brace using \MP{}.
+
+\begin{argtable}
+ \#1 & length & the width of the brace.
+\end{argtable}
+
+\macroname{\textbackslash gre@draw@roundbrace}{\#1}{gregoriotex-signs.tex}
+Draws a round over- or under-brace using \MP{}.
+
+\begin{argtable}
+ \#1 & length & the width of the brace.\\
+ \#2 & number & the height of the bounding box in em-relative units.\\
+ \#3 & \MP{} commands & \MP{} commands to draw the brace outline.
+\end{argtable}
+
+\macroname{\textbackslash gre@iflatex}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Evaluates to \verb=#1= if running under \LaTeX{}.
+
+\begin{argtable}
+ \#1 & \TeX{} code & the \TeX{} code to use if running under \LaTeX{}.
+\end{argtable}
+
+\macroname{\textbackslash gre@latex@barredsymbol}{\#1\#2\#3\#4}{gregoriotex-signs.tex}
+Internal method used by \verb=\grelatexsimpledefarredsymbol= to simplify
+the cascading of conditionals used to implement that macro.
+
+\bigskip\textbf{Only available in \LaTeX.}
+
+\begin{argtable}
+ \#1 & string & the value of \verb=\f@series/\f@shape= to match.\\
+ \#2 & \TeX{} code & the \TeX{} for the base symbol (\ie, \texttt{A}, \texttt{R}, or \texttt{V}).\\
+ \#3 & string & the control sequence name created by \verb=\gredefsizedsymbol= to use for the bar.\\
+ \#4 & dimension & the amount to shift the bar to the left from the end of the base symbol.
+\end{argtable}
+
+\macroname{\textbackslash gre@additionalbottomcustoslineend}{}{gregoriotex-signs.tex}
+Macro to place a bottom custos with an additional line (positions \texttt{a} and \texttt{b}) at the end of a line.
+
+\macroname{\textbackslash gre@additionalbottomcustoslinemiddle}{}{gregoriotex-signs.tex}
+Macro to place a bottom custos with an additional line (positions \texttt{a} and \texttt{b}) in the middle of a line.
+
+\macroname{\textbackslash gre@additionaltopcustoslineend}{}{gregoriotex-signs.tex}
+Macro to place a top custos with an additional line (positions \texttt{l} and \texttt{m}) at the end of a line.
+
+\macroname{\textbackslash gre@additionaltopcustoslinemiddle}{}{gregoriotex-signs.tex}
+Macro to place a top custos with an additional line (positions \texttt{l} and \texttt{m}) in the middle of a line.
+
+\macroname{\textbackslash gre@pickcustos}{\#1}{gregoriotex-signs.tex}
+Macro to pick the appropriate custos character.
+
+\begin{argtable}
+ \#1 & integer & height of the custos character to be placed\\
+\end{argtable}
+
+\macroname{\textbackslash gre@addspaceabove}{}{gregoriotex-main.tex}
+Macro to increase the space above the lines to account for above lines text.
+
+\macroname{\textbackslash gre@removespaceabove}{}{gregoriotex-main.tex}
+Macro to decrease the space above the lines as there is no longer any above lines text.
+
+\macroname{\textbackslash gre@alteration}{\#1\#2\#3\#4}{gregoriotex-signs.tex}
+Macro to typeset an alteration.
+
+\begin{argtable}
+ \#1 & integer & height of the alteration\\
+ \#2 & character alias & the alteration\\
+ \#3 & character alias & the hole of the alteration\\
+ \#4 & 1 & the alteration is a flat for a key change\\
+ & 0 & all other cases\\
+\end{argtable}
+
+\macroname{\textbackslash gre@calculate@clefnum}{\#1\#2}{gregoriotex-signs.tex}
+Macro calculating the \verb=\gre@clefnum= from the letter and number.
+
+\begin{argtable}
+ \#1 & charcter & type of clef (\texttt{c} or \texttt{f})\\
+ \#2 & integer & line number\\
+\end{argtable}
+
+\macroname{\textbackslash gre@clefnum}{}{gregoriotex-signs.tex}
+Count holding the current clef number.
+
+\macroname{\textbackslash gre@clefflat}{}{gregoriotex-signs.tex}
+Macro to hold the height of the current flat for the clef (\texttt{a} if no flat).
+
+\macroname{\textbackslash gre@updatelinesclef}{}{gregoriotex-signs.tex}
+Macro redrawing a key from \verb=\gre@clefnum=, useful for vertical space changes.
+
+\macroname{\textbackslash gre@currenttextabovelines}{}{gregoriotex-main.tex}
+Macro for storing the text which needs to be placed above the lines.
+
+\macroname{\textbackslash gre@typesettextabovelines}{\#1}{gregoriotex-main.tex}
+Macro for typesetting the text above the lines.
+
+\macroname{\textbackslash gre@dotranslationcenterend}{}{gregoriotex-main.tex}
+Macro to typeset a centered translation.
+
+\macroname{\textbackslash gre@drawfirstlines}{}{gregoriotex-main.tex}
+Macro to draw the first set of lines in a score (when shortened by an initial).
+
+\macroname{\textbackslash gre@generatelines}{}{gregoriotex-main.tex}
+Macro to (re)populate the box containing the lines.
+
+\macroname{\textbackslash gre@updatelinewidth}{}{gregoriotex-main.tex}
+Macro to shorten the lines to account for the presence of the initial.
+
+\macroname{\textbackslash gre@knownline}{}{gregoriotex-main.tex}
+A count which keeps track of which line of the score we're on.
+
+\macroname{\textbackslash gre@lastoflinecount}{}{gregoriotex-main.tex}
+Count to track where on the line we are. Values are 0 (we are not near the end of a line), 1 (we're at the last syllable of the line), and 2 (we just set the last syllable of the line and so are at the first syllable of a new line).
+
+\macroname{\textbackslash gre@savedlastoflinecount}{}{gregoriotex-main.tex}
+A spot to save the \verb=\gre@lastoflinecount= so we can change it temporarily and revert to the saved value later.
+
+\macroname{\textbackslash gre@newlinecommon}{\#1}{gregoriotex-main.tex}
+The macro which needs to be called each time a new lines is started.
+
+\begin{argtable}
+ \#1 & 0 & Justifying the line being ended\\
+ & 1 & Do not justify the line being ended\\
+\end{argtable}
+
+\macroname{\textbackslash gre@endafterbar}{\#1}{gregoriotex-main.tex}
+Macro to call after ending a bar.
+
+\begin{argtable}
+ \#1 & 0 & We are at the end of a line\\
+ & 1 & We not at the end of a line\\
+\end{argtable}
+
+\macroname{\textbackslash gre@endofsyllable}{\#1\#2\#3}{gregoriotex-syllable.tex}
+Macro called at end of a syllable, adds a penalty and a space.
+
+\begin{argtable}
+ \#1 & 0 & to only add the penalty\\
+ & 1 & otherwise\\
+ \#2 & 0 & if end of syllable\\
+ & 1 & if end of word\\
+ \#3 & 1 & if next syllable is a bar\\
+ & 0 & otherwise\\
+\end{argtable}
+
+\macroname{\textbackslash gre@exhyphencharsave}{}{gregoriotex-main.tex}
+Macro for saving the ex hyphen character so that it can be restored at the end of the score.
+
+\macroname{\textbackslash gre@factor}{}{gregoriotex-main.tex}
+Count which stores the current staff size.
+
+Default: 17 (approximately the size found in graduals)
+
+\macroname{\textbackslash gre@fillhole}{\#1}{gregoriotex-signs.tex}
+Macro to fill the hole in a glyph so that staff lines do not show through a hole in it.
+
+\begin{argtable}
+ \#1 & Gregorio\TeX\ char & character to use to fill the hole\\
+\end{argtable}
+
+\macroname{\textbackslash gre@calculate@notesaligncenter}{\#1}{gregoriotex-syllable.tex}
+Macro to find the alignment center for a group of notes. The value is the distance from the left edge of the group to the alignment point and is stored in \verb=\gre@dimen@notesaligncenter=.
+
+\begin{argtable}
+ \#1 & Note alignment type & See \ref{notesalign}\\
+\end{argtable}
+
+\macroname{\textbackslash gre@calculate@nextnotesaligncenter}{\#1}{gregoriotex-syllable.tex}
+Same as previous, but for the next syllable.
+
+\begin{argtable}
+ \#1 & Note alignment type & See \ref{notesalign}\\
+\end{argtable}
+
+\macroname{\textbackslash gre@calculate@simplenotesaligncenter}{\#1\#2}{gregoriotex-syllable.tex}
+Workhorse function behind \verb=\gre@calculate@notesaligncenter= and \verb=\gre@calculate@nextnotesaligncenter=.
+
+\begin{argtable}
+ \#1 & Note alignment type & See \ref{notesalign}\\
+ \#2 & 0 & this is for the current syllable\\
+ & 1 & this is for the next syllable\\
+\end{argtable}
+
+\macroname{\textbackslash gre@gregoriofontname}{}{gregoriotex-main.tex}
+Macro which stores the name of the currently selected font for the neumes.
+
+\macroname{\textbackslash gre@handleclivisspecialalignment}{\#1\#2\#3}{gregoriotex-syllable.tex}
+Macro for aligning clivis syllables according to the flag \verb=\gre@clivisalignment=.
+
+\begin{argtable}
+ \#1 & Gregorio\TeX\ glyph & Glyph to use when aligning clivis on its center\\
+ \#2 & Gregorio\TeX\ glyph & Glyph to use when aligning clivis on the center of the first punctum\\
+ \#3 & 0 & this is for the current syllable\\
+ & 1 & this is for the next syllable\\
+\end{argtable}
+
+\macroname{\textbackslash gre@hepisorline}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex}
+Macro to typeset a horizontal line (either an additional staff line or an episemus).
+
+\begin{argtable}
+ \#1 & character & The letter of the height of the episemus (not the height of the note it corresponds to).\\
+ \#2 & 0 & go back to the beginning of the previous glyph; this starts the episemus at the beginning of the previous glyph\\
+ & 1 & stay at the end of the glyph; doesn't make much sense to use this\\
+ & 2 & go back the width of \#1; this starts the episemus at the glyph from the end that starts at \#1's width from the end\\
+ & 3 & go back to the beginning of the previous glyph and then forward the width of \#1; this starts the episemus at the glyph from the start that starts just after \#1's width from the start\\
+ \#3 & integer &the ambitus for a two note episemus at the diagonal stroke of a porrectus, porrectus flexus, orculus resupinus, or torculus resupinus flexus\\
+ \#4 & 0 & an horizontal episemus\\
+ & 1 & an horizontal episemus under a note\\
+ & 3 & a line at the bottom\\
+ & 2 & a line at the top\\
+ \#5 & f & a normal episemus\\
+ & l & a small episemus aligned left\\
+ & c & a small episemus aligned center\\
+ & r & for a small episemus aligned right\\
+\end{argtable}
+
+\macroname{\textbackslash gre@hepisorlineaux}{\#1\#2\#3\#4}{gregoriotex-signs.tex}
+Macro that will help in the typesetting of a horizontal episemus and additional lines.
+
+\begin{argtable}
+ \#1 & Gregorio\TeX\ glyph & an offset glyph (see \#3, below)\\
+ \#2 & Gregorio\TeX\ glyph & the episemus glyph\\
+ \#3 & 0 & go back to the beginning of the previous glyph; this starts the episemus at the beginning of the previous glyph\\
+ & 1 & stay at the end of the glyph; doesn't make much sense to use this\\
+ & 2 & go back the width of \#1; this starts the episemus at the glyph from the end that starts at \#1's width from the end\\
+ & 3 & go back to the beginning of the previous glyph and then forward the width of \#1; this starts the episemus at the glyph from the start that starts just after \#1's width from the start\\
+ \#4 & 0 & an horizontal episemus\\
+ & 1 & an horizontal episemus under a note\\
+ & 3 & a line at the bottom\\
+ & 2 & a line at the top\\
+\end{argtable}
+
+\macroname{\textbackslash gre@vepisemusorrare}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex}
+Macro to typeset a vertical episemus or a rare accent (like accentus, circulus, etc.). This function must be called after a call to \verb=\GreGlyph=.
+
+\begin{argtable}
+ \#1 & character & the letter of the height of the episemus (not the height of the note it corresponds to.\\
+ \#2 & integer & See \nameref{EpisemusSpecial}\\
+ \#3 & Gregorio\TeX\ glyph & the sign glyph\\
+ \#4 & 1 & vertical episemus\\
+ & 2 & rare sign\\
+ & 3 & choral sign\\
+ & 4 & brace above the bar\\
+ \#5 & string & the choral sign, if relevant\\
+\end{argtable}
+
+\macroname{\textbackslash gre@vepisemusorrareaux}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-signs.tex}
+Macro to help typesetting vertical episemus.
+
+\begin{argtable}
+ \#1 & Gregorio\TeX\ glyph & is an offset glyph (see \#3 below)\\
+ \#2 & Gregorio\TeX glyph & the glyph upon which the sign is to be centered\\
+ \#3 & 0 & go back to the beginning of the previous glyph and then forward half the width of \#2; this puts the sign at the beginning of the previous glyph, whose first note is the size of \#2\\
+ & 1 & go back half the width of \#2; this puts the sign at the end of the previous glyph, whose last note is the size of \#2\\
+ & 2 & go back the width of \#1 and then forward half the width of \#2; this puts the sign at the glyph from the end that starts at \#1's width from the end\\
+ & 3 & go back to the beginning of the previous glyph and then forward the width of \#1 and then back half the width of \#2; this puts the sign at the glyph from the start that ends at \#1's width from the start\\
+ \#4 & dimension & a shift that we want to get applied, useful for punctum inclinatum for example\\
+ \#5 & integer & is the glyph number\\
+ \#6 & 1 & vertical episemus\\
+ & 2 & rare sign\\
+ & 3 & choral sign\\
+ & 4 & brace above the bar\\
+ \#7 & string & the choral sign if relevant\\
+\end{argtable}
+
+\macroname{\textbackslash gre@newglyphcommon}{}{gregoriotex-syllable.tex}
+Macro called before each glyph.
+
+\macroname{\textbackslash gre@normalinitial}{}{gregoriotex-main.tex}
+Macro called at the end of the score to ensure that a big initial setting doesn't carry into the next score.
+
+\macroname{\textbackslash greoldcatcode}{}{gregoriotex.tex}
+Macro to store the catcode for ``\@'' so that we can use said symbol in function names under Plain\TeX\ and then restore the original catcode after the package is done loading.
+
+\macroname{\textbackslash gre@setstylefont}{}{gregoriotex-main.tex}
+Macro for opening up greextra font.
+
+\macroname{\textbackslash gre@syllablenotes}{\#1}{gregoriotex-syllable.tex}
+Macro for populating \verb=\gre@box@syllablenotes=.
+
+\begin{argtable}
+ \#1 & string & The contents to be placed in the box\\
+\end{argtable}
+
+\macroname{\textbackslash gre@symbolfontsize}{}{gregoriotex-symbols.tex}
+The font size at which symbols are to be loaded.
+
+\macroname{\textbackslash gre@textnormal}{\#1}{gregoriotex-syllable.tex}
+Macro which applies the default text format.
+
+\macroname{\textbackslash gre@typekey}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex}
+Macro which typesets the key.
+
+\begin{argtable}
+ \#1 & character & the type of the key: c or f\\
+ \#2 & integer & the line of the key (1 is the lowest)\\
+ \#3 & 0 & no need to use small key characters (inside a line)\\
+ & 1 & we must use small key characters (inside a line)\\
+ \#4 & 0 & no extra space is needed after the key\\
+ & 1 & we must type a space after the key\\
+ \#5 & integer & if 3, it means that we must not put a flat after the key, otherwise it's the height of the flat\\
+\end{argtable}
+
+\macroname{\textbackslash gre@updateleftbox}{}{gregoriotex-main.tex}
+Macro to update the box printed a the left end of every line (the one which holds the staff lines).
+
+\macroname{\textbackslash gre@usestylecommon}{}{gregoriotex-signs.tex}
+Macro which specifies the alternate glyphs which are common to all of the styles.
+
+\macroname{\textbackslash gre@widthof}{\#1}{gregoriotex-main.tex}
+Macro for calculating the width of its argument and storing it in \verb=\gre@dimen@temp@three=.
+
+\macroname{\textbackslash gre@writebar}{\#1\#2\#3}{gregoriotex-signs.tex}
+Macro to write a bar.
+
+\begin{argtable}
+ \#1 & 0 & virgula\\
+ & 1 & minima\\
+ & 2 & minor\\
+ & 3 & major\\
+ & 4 & finalis\\
+ & 5 & the last finalis\\
+ \#2 & 0 & in a syllable containing only this bar\\
+ & 1 & in a syllable containing other notes\\
+ \#3 & \TeX\ code & macros that may happen before the skip after the bar (typically GreVEpisemus)\\
+\end{argtable}
+
+\macroname{\textbackslash gre@@arg}{}{gregoriotex-syllable.tex}
+A dummy macro which is used to store a macro which takes an argument so that it can be used in a \verb=\ifx= comparison. The value of the argument is provided at the time this macro is created.
+
+\macroname{\textbackslash gre@nothing}{}{gregoriotex-main.tex}
+A dummy macro which has not contents. Used for \verb=\ifx= comparisons.
+
+\macroname{\textbackslash gre@annotation}{[\#1]\#2}{gregoriotex-main.tex}
+Workhorse function behind \verb=\greannotation=.
+
+\begin{argtable}
+ \#1 & \texttt{c} & center align the new line with the existing annotation content\\
+ & \texttt{l} & left align the new line with the existing annotation content\\
+ & \texttt{r} & right align the new line with the existing annotation content\\
+ \#2 & string & the new annotation content\\
+\end{argtable}
+
+\macroname{\textbackslash gre@atletter}{}{gregoriotex-main.tex}
+A Lua\TeX\ catcode table which makes sure that Lua\TeX\ treats `@' corectly.
+
+\macroname{\textbackslash gre@baseunit}{}{gregoriotex-spaces.tex}
+The units attached to base dimension in a string distance. These units are extracted as part of coercing one distance to have the same units as another (\verb=\gre@consistentunits=).
+
+\macroname{\textbackslash gre@stretchunit}{}{gregoriotex-spaces.tex}
+The units attached to stretch dimension in a string distance. These units are extracted as part of coercing one distance to have the same units as another (\verb=\gre@consistentunits=).
+
+\macroname{\textbackslash gre@shrinkunit}{}{gregoriotex-spaces.tex}
+The units attached to shrink dimension in a string distance. These units are extracted as part of coercing one distance to have the same units as another (\verb=\gre@consistentunits=).
+
+\macroname{\textbackslash gre@bug}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Macro for raising a bug error when some calculation goes awry and comes up with a non-sensical result. Generally will be found in Lua code, not \TeX\ code.
+
+\macroname{\textbackslash gre@changestyle}{\#1\#2[\#3]}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Workhorse function behind \verb=\grechangestyle=. Necessary because the internals of the definition are slightly different in \LaTeX\ and Plain\TeX.
+
+\macroname{\textbackslash gre@compute@bolshift}{\#1\#2}{gregoriotex-spaces.tex}
+Macro used in \verb=\GreSyllable=. Sets \verb=\gre@skip@bolshift= to the left kern that should appear at the beginning of a line in case of a forced linebreak. The goal of this left kern is to have all lines aligned on notes.
+
+\begin{argtable}
+ \#1 & dimension & \verb=\gre@dimen@begindifference= of the first syllable of the line\\
+ \#2 & 0 & No need to worry about a Lua\TeX\ bug\\
+ & 1 & Apply correction for Lua\TeX\ bug\\
+\end{argtable}
+
+\macroname{\textbackslash gre@compute@eolshift}{\#1}{gregoriotex-spaces.tex}
+Macro used in \verb=\GreSyllable=. Sets \verb=\gre@skip@eolshift= to the left kern that
+should appear before an end of line. The improvement is tiny: when
+text go further than notes in the last syllable of a line, the idea
+is to allow text to go a bit further right, under the custos.
+\verb=\gre@skip@eolshift= should be called at the end of the last syllable of the
+line, just before the linebreak penalty, so that LaTeX believes the
+line is a bit shorter, and expands it more.
+
+\begin{argtable}
+ \#1 & dimension & The \verb=\gre@dimen@enddifference= of the corresponding syllable\\
+\end{argtable}
+
+\macroname{\textbackslash gre@compute@syllablefinalskip}{\#1\#2}{gregoriotex-spaces.tex}
+Macro computing the skip at the end of the syllable.
+
+\begin{argtable}
+ \#1 & 0 & if end of syllable\\
+ & 1 & if end of word\\
+ \#2 & 0 & if next syllable is normal\\
+ & 1 & if it's a bar\\
+\end{argtable}
+
+\macroname{\textbackslash gre@convert}{}{gregoriotex-spaces.tex}
+Macro to hold the original distance which is to be scaled by \verb=\gre@changeonedimenfactor=
+
+\macroname{\textbackslash gre@debug}{}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Macro to hold the list of debug messages which should be designated as printing.
+
+\macroname{\textbackslash gre@debugmsg}{\#1\#2}{gregoriotex-main.tex}
+Macro to print debugging messages.
+
+\begin{argtable}
+ \#1 & string & The category of the message (used in conjunction with \verb=\gre@debug= to determine whether to print the message or not\\
+ \#2 & string & The debug message\\
+\end{argtable}
+
+\macroname{\textbackslash gre@declarefileversion}{\#1\#2}{gregoriotex-main.tex}
+Macro which checks for version consistency between Gregorio\TeX\ files.
+
+\begin{argtable}
+ \#1 & string & name of the current file\\
+ \#2 & string & version of the current file\\
+\end{argtable}
+
+\macroname{\textbackslash gre@def@char@he}{\#1\#2}{gregoriotex-chars.tex}
+Macro for defining the various types of horizontal episema.
+
+\begin{argtable}
+ \#1 & string & name of the horizontal episemus to be defined\\
+ \#2 & string & Camel case name of horizontal episemus to be defined\\
+\end{argtable}
+
+\macroname{\textbackslash gre@def@char@he@porr}{\#1\#2}{gregoriotex-chars.tex}
+Macro for defining the various types of horizontal episema porrectus.
+
+\begin{argtable}
+ \#1 & string & name of the horizontal episemus porrectus to be defined\\
+ \#2 & string & Camel case name of horizontal episemus porrectus to be defined\\
+\end{argtable}
+
+\macroname{\textbackslash gre@char@cavum}{\#1\#2\#3\#4\#5\#6\#7\#8}{gregoriotex-signs.tex}
+Macro to typeset a "cavum" character.
+
+\begin{argtable}
+ \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\
+ \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\
+ \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\
+ \#4 & \TeX\ code & Macros executed before the punctum cavum is written.\\
+ \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\
+ \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled.\\
+ \#7 & control sequence & The control sequence for the glyph.\\
+ \#8 & control sequence & The control sequence for the hole glyph.
+\end{argtable}
+
+\macroname{\textbackslash gre@get@spaceskip}{\#1}{gregoriotex-signs.tex}
+Loads \verb=\gre@skip@temp@four= with the appropriate rubber length given the
+desired case.
+
+\begin{argtable}
+ \#1 & 0 & Default space.\\
+ & 1 & Zero-width space.\\
+ & 2 & Space between flat or natural and a note.\\
+ & 3 & Space between two puncta inclinata.\\
+ & 4 & Space between bivirga or trivirga.\\
+ & 5 & space between bistropha or tristropha.\\
+ & 6 & Space after a punctum mora XXX: not used yet, not so sure it is a good idea\ldots\\
+ & 7 & Space between a punctum inclinatum and a punctum inclinatum debilis.\\
+ & 8 & Space between two puncta inclinata debilis.\\
+ & 9 & Space before a punctum (or something else) and a punctum inclinatum.\\
+ & 10 & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd).\\
+ & 11 & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or more).\\
+\end{argtable}
+
+\macroname{\textbackslash gre@nabcfontname}{}{gregoriotex-main.tex}
+Macro which stores the name of the currently selected font for \texttt{nabc}.
+
+\macroname{\textbackslash gre@nabcfontsize}{}{gregoriotex-main.tex}
+Macro which stores the size of the currently selected font for \texttt{nabc}.
+
+\macroname{\textbackslash gre@endsyllablepart}{}{gregoriotex-syllable.tex}
+Macro which stores the end part of the current syllable (that which comes after the alignment part).
+
+\macroname{\textbackslash gre@firstsyllablepart}{}{gregoriotex-syllable.tex}
+Macro which stores the first part of the current syllable (that which comes before the alignment part).
+
+\macroname{\textbackslash gre@middlesyllablepart}{}{gregoriotex-syllable.tex}
+Macro which stores the middle part of the current syllable (the part which aligns with the notes).
+
+\macroname{\textbackslash gre@nextendsyllablepart}{}{gregoriotex-syllable.tex}
+Macro which stores the end part of the next syllable (that which comes after the alignment part).
+
+\macroname{\textbackslash gre@nextfirstsyllablepart}{}{gregoriotex-syllable.tex}
+Macro which stores the first part of the next syllable (that which comes before the alignment part).
+
+\macroname{\textbackslash gre@nextmiddlesyllablepart}{}{gregoriotex-syllable.tex}
+Macro which stores the middle part of the next syllable (the part which aligns with the notes).
+
+\macroname{\textbackslash gre@fixedtextformat}{\#1}{gregoriotex-syllable.tex}
+A macro which applies formatting that needs to apply to the whole syllable (rather than the parts individually) for the current syllable. Necessary to preserve ligatures across parts within a syllable.
+
+\begin{argtable}
+ \#1 & string & The syllable (usually built as \verb=\gre@firstsyllablepart\gre@middlesyllablepart\gre@endsyllablepart=\\
+\end{argtable}
+
+\macroname{\textbackslash gre@fixednexttextformat}{\#1}{gregoriotex-syllable.tex}
+A macro which applies formatting that needs to apply to the whole syllable (rather than the parts individually) for the next syllable. Necessary to preserve ligatures across parts within a syllable.
+
+\begin{argtable}
+ \#1 & string & The syllable (usually built as \verb=\gre@nextfirstsyllablepart\gre@nextmiddlesyllablepart\gre@nextendsyllablepart=\\
+\end{argtable}
+
+\macroname{\textbackslash gre@gabcname}{}{gregoriotex-main.tex}
+Macro which holds the point-and-click file name.
+
+\macroname{\textbackslash gre@gregoriotexluaversion}{}{gregoriotex-main.tex}
+Macro to hold the version number of \emph{gregoriotex.lua} so that it can be checked for consistency.
+
+\macroname{\textbackslash gre@gregorioversion}{}{gregoriotex-main.tex}
+Macro to hold the version number of Gregorio\TeX\ so that it can be checked for consistency.
+
+\macroname{\textbackslash gre@leftfill}{}{gregoriotex-main.tex}
+Macro set to \verb=\hfil= or \verb=\relax= depending on alignment choices.
+
+\macroname{\textbackslash gre@rightfill}{}{gregoriotex-main.tex}
+Macro set to \verb=\hfil= or \verb=\relax= depending on alignment choices.
+
+\macroname{\textbackslash gre@mark@abovelinestext}{}{gregoriotex-main.tex}
+Macro to set the point-and-click position for above lines text.
+
+\macroname{\textbackslash gre@mark@translation}{}{gregoriotex-main.tex}
+Macro to set the point-and-click position for translations.
+
+\macroname{\textbackslash gre@pitch@[a-p]}{}{gregoriotex-main.tex}
+Macros which map gabc pitch letters (the final part of the macro name) to the numerical value that Gregorio\TeX\ uses in processing note placement.
+
+\macroname{\textbackslash gre@pitch@adjust@top}{}{gregoriotex-main.tex}
+If any note appears above this pitch, the space above the lines must be adjusted to account for it.
+
+\macroname{\textbackslash gre@pitch@adjust@bottom}{}{gregoriotex-main.tex}
+If any note appears below this pitch, the space below the lines must be adjusted to account for it.
+
+\macroname{\textbackslash gre@pointandclick}{\#1\#2}{gregoriotex-main.tex}
+Macro to generate the point-and-click links.
+
+\begin{argtable}
+ \#1 & \TeX\ code & the entity which is to contain the link\\
+ \#2 & link target & line:char:column for the link\\
+\end{argtable}
+
+\macroname{\textbackslash gre@prefix}{}{gregoriotex-spaces.tex}
+Either ``skip'' or ``dimen'' according to the distance being set or changed at the given moment.
+
+\macroname{\textbackslash gre@rubberpermit}{\#1}{gregoriotex-spaces.tex}
+Determines whether the given distance is allowed to take a rubber length.
+
+\begin{argtable}
+ \#1 & string & the name of the distance to check\\
+\end{argtable}
+
+\macroname{\textbackslash gre@setgregoriofont}{[\#1]\#2}{gregoriotex-main.tex}
+Workhorse function behind \verb=\gresetgregoriofont=.
+
+\begin{argtable}
+ \#1 & \textit{(omitted)} & Use the normal font and rule set (default).\\
+ & op & Use the alternate Dominican font/rule set.\\
+ \#2 & greciliae & Use the Greciliae font (default).\\
+ & gregorio & Use the Gregorio font.\\
+ & parmesan & Use the Parmesan font.\\
+\end{argtable}
+
+\macroname{\textbackslash gre@syllable@end}{\#1\#2\#3}{gregoriotex-syllable.tex}
+Macro to make a few checks and call the right macros between \verb=\endbeforebar, \endofword, \endofsyllable=.
+
+\begin{argtable}
+ \#1 & & next syllable type (\#7 of \verb=\GreSyllable=)\\
+ \#2 & string & next syllable text\\
+ \#3 & 0 & this syllable is not the end of a word\\
+ & 1 & this syllable is the end of a word\\
+\end{argtable}
+
+\macroname{\textbackslash gre@typeout}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex}
+Macro which points to \verb=\typeout= in \LaTeX\ or \verb=\message= in Plain\TeX.
+
+\macroname{\textbackslash gre@unsetfixedtextformat}{}{gregoriotex-syllable.tex}
+Macro which changes \verb=\gre@fixedtextformat= back to normal text.
+
+\macroname{\textbackslash gre@unsetfixednexttextformat}{}{gregoriotex-syllable.tex}
+Macro which changes \verb=\gre@fixednexttextformat= back to normal text.
+
+\macroname{\textbackslash gregoriotex@symbols@loaded}{}{gregoriotex-symbols.tex}
+Empty macro which is used to determine if the symbols have been loaded and prevent loading them again if they have.
+
+\macroname{\textbackslash gre@hskip}{}{gregoriotex-signs.tex}
+Alias for \verb=\hskip= or \verb=\kern=. We use this rather than those functions directly so that the same element can appear in discretionaries where \verb=\kern= is allowed but \verb=\hskip= is not by simply changing the assignment of this macro when we enter one.
+
+\macroname{\textbackslash gre@localleftbox}{}{gregoriotex-main.tex}
+Alias for \verb=\luatexlocalleftbox=.
+
+\macroname{\textbackslash gre@localrightbox}{}{gregoriotex-main.tex}
+Alias for \verb=\luatexlocalrightbox=.
+
+\macroname{\textbackslash gre@resizebox}{}{gregoriotex-main.tex}
+Alias for \verb=\resizebox=.
+
+\subsection{Auxiliary File}
+Gregorio\TeX\ creates its own auxiliary file (extension \texttt{gaux}) which it uses to store information between successive typesetting runs. This allows for such features as the dynamic interline spacing. The following functions are used to interact with that auxiliary file.
+
+\macroname{\textbackslash gre@gaux}{}{gregoriotex-main.tex}
+The handle for the auxiliary file.
+
+\macroname{\textbackslash gre@open@gaux}{}{gregoriotex-main.tex}
+Macro for opening the auxiliary file.
+
+\macroname{\textbackslash gre@close@gaux}{}{gregoriotex-main.tex}
+Macro for closing the auxiliary file.
+
+\macroname{\textbackslash gre@write@gaux}{\#1}{gregoriotex-main.tex}
+Macro for writing the auxiliary file.
+
+\begin{argtable}
+ \#1 & string & contents to be written to the auxiliary file\\
+\end{argtable}
+
+
+\subsection{Fonts}
+Gregorio\TeX\ loads a number of fonts which are referred to by the following macros.
+
+\macroname{\textbackslash gre@font@music}{}{gregoriotex-main.tex}
+The font for the neumes.
+
+\macroname{\textbackslash gre@font@style}{}{gregoriotex-main.tex}
+The font for some of the extra characters, such as the bar for barred letters.
+
+\macroname{\textbackslash gre@font@nabc}{}{gregoriotex-nabc.tex}
+The font for ancient notation.
+
+\macroname{\textbackslash gre@font@biginitial}{}{gregoriotex.tex}
+The font for the default big initial format in Plain\TeX.
+
+\macroname{\textbackslash gre@font@initial}{}{gregoriotex.tex}
+The font for the default initial format in Plain\TeX.
+
+
+\subsection{Character Reference Aliases}
+To make referencing and changing them easier, Gregorio\TeX\ stores reference information for certain characters using the following macros.
+
+\macroname{\textbackslash gre@fontchar@abovebarbrace}{}{gregoriotex-chars.tex}
+The above bar brace.
+
+\macroname{\textbackslash gre@fontchar@flat}{}{gregoriotex-chars.tex}
+The flat character.
+
+\macroname{\textbackslash gre@fontchar@flathole}{}{gregoriotex-chars.tex}
+The flat hole character (\ie, the character needed to prevent lines from showing through the center of the flat).
+
+\macroname{\textbackslash gre@fontchar@natural}{}{gregoriotex-chars.tex}
+The natural character.
+
+\macroname{\textbackslash gre@fontchar@naturalhole}{}{gregoriotex-chars.tex}
+The natural hole character (\ie, the character needed to prevent lines from showing through the center of the natural).
+
+\macroname{\textbackslash gre@fontchar@sharp}{}{gregoriotex-chars.tex}
+The sharp character.
+
+\macroname{\textbackslash gre@fontchar@sharphole}{}{gregoriotex-chars.tex}
+The sharp hole character (\ie, the character needed to prevent lines from showing through the center of the sharp).
+
+\macroname{\textbackslash gre@fontchar@punctumcavum}{}{gregoriotex-signs.tex}
+The punctum cavum character.
+
+\macroname{\textbackslash gre@fontchar@punctumcavumhole}{}{gregoriotex-signs.tex}
+The punctum cavum hole character (\ie, the character needed to prevent lines from showing through the center of the punctum cavum).
+
+\macroname{\textbackslash gre@fontchar@lineapunctumcavum}{}{gregoriotex-signs.tex}
+The linea punctum cavum character.
+
+\macroname{\textbackslash gre@fontchar@lineapunctumcavumhole}{}{gregoriotex-signs.tex}
+The linea punctum cavum hole character (\ie, the character needed to prevent lines from showing through the center of the linea punctum cavum).
+
+\macroname{\textbackslash gre@fontchar@incclef}{}{gregoriotex-chars.tex}
+The \texttt{c}-clef which appears in the middle of a line.
+
+\macroname{\textbackslash gre@fontchar@infclef}{}{gregoriotex-chars.tex}
+The \texttt{f}-clef which appears in the middle of a line.
+
+\macroname{\textbackslash gre@fontchar@cclef}{}{gregoriotex-chars.tex}
+The \texttt{c}-clef which appears at the beginning of a line.
+
+\macroname{\textbackslash gre@fontchar@fclef}{}{gregoriotex-chars.tex}
+The \texttt{f}-clef which appears at the beginning of a line.
+
+\macroname{\textbackslash gre@fontchar@punctum}{}{gregoriotex-chars.tex}
+The punctum character.
+
+\macroname{\textbackslash gre@fontchar@punctummora}{}{gregoriotex-chars.tex}
+The punctum mora character.
+
+\macroname{\textbackslash gre@fontchar@underbrace}{}{gregoriotex-signs.tex}
+The under brace character.
+
+\macroname{\textbackslash gre@fontchar@verticalepisemus}{}{gregoriotex-chars.tex}
+The vertical episemus character.
+
+\macroname{\textbackslash gre@fontchar@brace}{}{gregoriotex-signs.tex}
+The (rounded) brace character.
+
+\macroname{\textbackslash gre@fontchar@curlybrace}{}{gregoriotex-signs.tex}
+The curly brace character.
+
+\macroname{\textbackslash gre@fontchar@custosbottomlong}{}{gregoriotex-chars.tex}
+The custos character with a long upwards directed vigra.
+
+\macroname{\textbackslash gre@fontchar@custosbottommiddle}{}{gregoriotex-chars.tex}
+The custos character with a middle upwards directed vigra.
+
+\macroname{\textbackslash gre@fontchar@custosbottomshort}{}{gregoriotex-chars.tex}
+The custos character with a short upwards directed vigra.
+
+\macroname{\textbackslash gre@fontchar@custostoplong}{}{gregoriotex-chars.tex}
+The custos character with a long downwards directed vigra.
+
+\macroname{\textbackslash gre@fontchar@custostopmiddle}{}{gregoriotex-chars.tex}
+The custos character with a middle downwards directed vigra.
+
+\macroname{\textbackslash gre@fontchar@custostopshort}{}{gregoriotex-chars.tex}
+The custos character with a short downwards directed vigra.
+
+\macroname{\textbackslash gre@fontchar@divisiofinalis}{}{gregoriotex-signs.tex}
+The divisio finalis.
+
+\macroname{\textbackslash gre@fontchar@divisiomaior}{}{gregoriotex-signs.tex}
+The divisio maior.
+
+\macroname{\textbackslash gre@char@normalhyphen}{}{gregoriotex-main.tex}
+A normal hyphen in the text font.
+
+\macroname{\textbackslash gre@char@fuse@debilis}{}{gregoriotex-chars.tex}
+A fused character consisting of a leading punctum initio debilis (of ambitus one) and a regular punctum.
+
+\macroname{\textbackslash gre@char@fuse@oriscus@one}{}{gregoriotex-chars.tex}
+A fused character consisting of a leading oriscus (of ambitus one) and a regular punctum.
+
+\macroname{\textbackslash gre@char@fuse@oriscus@two}{}{gregoriotex-chars.tex}
+A fused character consisting of a leading oriscus (of ambitus two) and a regular punctum.
+
+\macroname{\textbackslash gre@char@fuse@punctum@one}{}{gregoriotex-chars.tex}
+A fused character consisting of a leading punctum (of ambitus one) and a regular punctum.
+
+\macroname{\textbackslash gre@char@fuse@punctum@two}{}{gregoriotex-chars.tex}
+A fused character consisting of a leading punctum (of ambitus two) and a regular punctum.
+
+\macroname{\textbackslash gre@char@fuse@quilisma@one}{}{gregoriotex-chars.tex}
+A fused character consisting of a leading quilisma (of ambitus one) and a regular punctum.
+
+\macroname{\textbackslash gre@char@fuse@quilisma@two}{}{gregoriotex-chars.tex}
+A fused character consisting of a leading quilisma (of ambitus two) and a regular punctum.
+
+\macroname{\textbackslash gre@char@he@...}{\#1}{gregoriotex-chars.tex}
+A class of macros for the horizontal episema which populates the \verb=\gre@box@hep= box.
+
+
+
+\subsection{Flags}
+
+Flags are either boolean (defined with \verb=\newif=), Lua\TeX\ attributes, or counts (defined with \verb=\newcount=). They store settings and/or the current state of something so that Gregorio\TeX\ can typeset things in the desired manner.
+
+All distances in \nameref{distances} have a flag associated with them, of the form \verb=\gre@scale@*=. This flag
+indicates if the distance should scale when the staff size changes (1)
+or not (0).
+
+\macroname{\textbackslash ifgre@checklength}{}{gregoriotex-spaces.tex}
+Boolean used in \verb=\gresetdim= to indicate if we are attempting to set a rubber length.
+
+\macroname{\textbackslash ifgre@rubber}{}{gregoriotex-spaces.tex}
+Boolean used in \verb=\gre@changeonedimenfactor= to indicate if we are dealing with one of the distances which can accept a rubber length.
+
+\macroname{\textbackslash ifgre@stretch}{}{gregoriotex-spaces.tex}
+Boolean used in \verb=\gre@changeonedimenfactor= as we test for the presence of a stretch.
+
+\macroname{\textbackslash ifgre@shrink}{}{gregoriotex-spaces.tex}
+Boolean used in \verb=\gre@changeonedimenfactor= as we test for the presence of a shrink.
+
+\macroname{\textbackslash ifgre@vowelcentering}{}{gregoriotex-syllable.tex}
+Boolean used to specify whether the center of the vowel or the center of the syllable is used to align the lyrics with their neumes.
+
+\macroname{\textbackslash ifgre@translationcentering}{}{gregoriotex-main.tex}
+Boolean used to specify whether the translation text should be centered below its respective syllable.
+
+\macroname{\textbackslash ifgre@showlines}{}{gregoriotex-main.tex}
+Boolean used to specify whether the staff lines should be shown or not.
+
+\macroname{\textbackslash ifgre@hidepclines}{}{gregoriotex-signs.tex}
+Boolean used to specify whether the staff lines behind a punctum cavum should be hidden.
+
+\macroname{\textbackslash ifgre@hidealtlines}{}{gregoriotex-signs.tex}
+Boolean used to specify whether the staff lines behind an alteration should be hidden.
+
+\macroname{\textbackslash ifgre@hepisemusbridge}{}{gregoriotex-signs.tex}
+Boolean used to specify whether adjacent horizontal episema should be joined together.
+
+\macroname{\textbackslash ifgre@drawbraces}{}{gregoriotex-signs.tex}
+Boolean used to specify whether braces should be drawn by \MP{} as
+opposed to rendered via the score font.
+
+\macroname{\textbackslash gre@biginitial}{}{gregoriotex-main.tex}
+Count to track whether the initial is big (2-lines) or normal (1-line).
+
+\macroname{\textbackslash ifgre@boxing}{}{gregoriotex-syllable.tex}
+Boolean to track whether we're placing the contents of syllable notes into their box or actually printing that box (helps prevent spurious spaces from occurring when the box is being filled but not printed).
+
+\macroname{\textbackslash ifgre@mustdotranslationcenterend}{}{gregoriotex-main.tex}
+Boolean to track whether we must do translation centering.
+
+\macroname{\textbackslash ifgre@endofscore}{}{gregoriotex-syllable.tex}
+Boolean to mark the last syllable of the score.
+
+\macroname{\textbackslash ifgre@firstglyph}{}{gregoriotex-syllable.tex}
+Boolean that tells us if the current glyph is the first glyph or not.
+
+\macroname{\textbackslash gre@attr@dash}{}{gregoriotex-main.tex}
+A Lua\TeX\ attribute which indicates whether a syllable takes a dash if it ends a line.
+
+\macroname{\textbackslash gre@attr@center}{}{gregoriotex-main.tex}
+A Lua\TeX\ attribute which indicates the type of translation centering.
+
+\macroname{\textbackslash gre@attr@glyph@id}{}{gregoriotex-main.tex}
+A Lua\TeX\ attribute which identifies the glyph we are at. Used for dynamic line spacing.
+
+\macroname{\textbackslash gre@attr@glyph@top}{}{gregoriotex-main.tex}
+A Lua\TeX\ attribute which identifies the high point of the glyph. Used for dynamic line spacing.
+
+\macroname{\textbackslash gre@attr@glyph@bottom}{}{gregoriotex-main.tex}
+A Lua\TeX\ attribute which identifies the low point of the glyph. Used for dynamic line spacing.
+
+\macroname{\textbackslash gre@clivisalignment}{}{gregoriotex-syllable.tex}
+Count to indicate how the clivis is to be aligned with its respective syllable text. Values: 0) always align clivis on its center; 1) align clivis on first punctum; 2) align clivis on its center, except if notes would go left of text or consonants after vowels are larger than \verb=\gre@dimen@clivisalignmentmin=.
+
+\macroname{\textbackslash gre@insidediscretionary}{}{gregoriotex-signs.tex}
+Macro which indicates whether we are currently inside a discretionary (1) or not (0). Cannot be converted to a \TeX\ boolean because it's value needs to be passed to Lua.
+
+\macroname{\textbackslash ifgre@isonaline}{}{gregoriotex-syllable.tex}
+Boolean which indicates whether the current note is on a line or not (used to adjust the height of some symbols so they won't print on a line).
+
+\macroname{\textbackslash ifgre@lastispunctum}{}{gregoriotex-syllable.tex}
+Boolean which indicates if the most recent note was a punctum mora.
+
+\macroname{\textbackslash ifgre@lastispunctumsave}{}{gregoriotex-signs.tex}
+Boolean for storing \verb=\ifgre@lastispunctum= so that it can be restored later.
+
+\macroname{\textbackslash gre@nlbstate}{}{gregoriotex-main.tex}
+Macro which indicates if we are in a no line break area due to translation centering (1), an explicit no line break designation in the gabc (2), or not at all (0).
+
+\macroname{\textbackslash gre@nlbinitialstate}{}{gregoriotex-main.tex}
+Macro to store \verb=\gre@nlbstate= as we initialize or end a no line break area so that we can manipulate said flag as part of the process.
+
+\macroname{\textbackslash ifgre@usestylefont}{}{gregoriotex-main.tex}
+Boolean which specifies whether the style font should be loaded or not.
+
+\macroname{\textbackslash ifgre@keeprightbox}{}{gregoriotex-signs.tex}
+Boolean which specifies if we have to keep the localrightbox until the end.
+
+\macroname{\textbackslash gre@compilegabc}{}{gregoriotex-main.tex}
+Macro which specifies the default compilation behavior: never compile (0), auto compile (1), or always compile (2).
+
+\macroname{\textbackslash ifgre@nabcfontloaded}{}{gregoriotex-nabc.tex}
+Boolean which indicates whether the \texttt{nabc} font has been loaded.
+
+\macroname{\textbackslash gre@generate@pointandclick}{}{gregoriotex-syllable.tex}
+Count which indicates whether the point-and-click functionality should be implemented (1) or not (0). Not a boolean because it needs to be readable by Lua.
+
+\macroname{\textbackslash gre@variableheightexpansion}{}{gregoriotex-main.tex}
+Count to indicated if the spacing between lines should be variable (1) or fixed (0). Not a boolean because it needs to be readable by Lua.
+
+\macroname{\textbackslash ifgre@blockeolcustos}{}{gregoriotex-main.tex}
+Boolean which indicates whether the custos at the end of the line should be blocked.
+
+\macroname{\textbackslash ifgre@breakintranslation}{}{gregoriotex-main.tex}
+Boolean which indicates if line breaks are allowed inside a translation.
+
+\macroname{\textbackslash ifgre@bolshiftsenabled}{}{gregoriotex-main.tex}
+Boolean which indicates if the left shift for the first syllables of lines is enabled.
+
+\macroname{\textbackslash ifgre@eolshiftsenabled}{}{gregoriotex-main.tex}
+Boolean which indicates if the left shift for the last syllables of lines is enabled.
+
+\macroname{\textbackslash ifgre@euouae@implies@nlba}{}{gregoriotex-main.tex}
+Boolean which indicates if line breaks are prohibited in an \texttt{euouae} area.
+
+\macroname{\textbackslash ifgre@in@euouae}{}{gregoriotex-main.tex}
+Boolean which indicates that we are in an \texttt{euouae} area.
+
+\macroname{\textbackslash ifgre@justifylastline}{}{gregoriotex-main.tex}
+Boolean which indicates that the last line of the score should be justified.
+
+\macroname{\textbackslash ifgre@showclef}{}{gregoriotex-main.tex}
+Boolean which indicates that the clef should be visible.
+
+
+
+
+\subsection{Boxes}
+
+Boxes are used to store elements of the score before they are printed for the purposes of reusing them and/or measuring them in order to determine their appropriate placement.
+
+\macroname{\textbackslash gre@box@hep}{}{gregoriotex-chars.tex}
+Box for horizontal episemi.
+
+\macroname{\textbackslash gre@box@temp@width}{}{gregoriotex-main.tex}
+Box for holding an element in order to determine its width.
+
+\macroname{\textbackslash gre@box@initial}{}{gregoriotex-main.tex}
+Box which holds the initial of the score.
+
+\macroname{\textbackslash gre@box@annotation}{}{gregoriotex-main.tex}
+Box holding the annotation which goes above the initial.
+
+\macroname{\textbackslash gre@box@annotation@add}{}{gregoriotex-main.tex}
+Box used for the new line to be added to the annotation.
+
+\macroname{\textbackslash gre@box@annotation@old}{}{gregoriotex-main.tex}
+Box used for the existing lines in the annotation when a new line is being added.
+
+\macroname{\textbackslash gre@box@lines}{}{gregoriotex-main.tex}
+Box holding the staff lines.
+
+\macroname{\textbackslash gre@box@temp@sign}{}{gregoriotex-signs.tex}
+Box to hold a sign so we can measure it for placement.
+
+\macroname{\textbackslash gre@box@syllablenotes}{}{gregoriotex-syllable.tex}
+Box holding the notes associated with a syllable.
+
+\macroname{\textbackslash gre@box@syllabletext}{}{gregoriotex-syllable.tex}
+Box holding the text associated with a syllable.
+
+\macroname{\textbackslash gre@box@hep}{}{gregoriotex-chars.tex}
+Box holding the horizontal episemus.
+
+
+\subsection{Distances}
+All of the distances listed in \nameref{distances} have an internal
+associated with them, of the form of \verb=\gre@*@*=, which stores the value of the distance (in
+string representation). The first wildcard is either \texttt{skip} or \texttt{dimen} according to the distance type, while the second is the name of the distance.
+
+These additional distances are calculated by Gregorio based on the values for the user customizable distances and what may be going on in the score at the time of their use.
+
+\macroname{\textbackslash gre@dimen@clefwidth}{}{gregoriotex-spaces.tex}
+Width of the clef.
+
+\macroname{\textbackslash gre@dimen@constantglyphraise}{}{gregoriotex-spaces.tex}
+Dimension representing the space between the 0 of the gregorian fonts and the effective 0 of the TeX score.
+
+\macroname{\textbackslash gre@dimen@currenttranslationheight}{}{gregoriotex-spaces.tex}
+Dimension representing the space for the translation beneath the text.
+
+\macroname{\textbackslash gre@dimen@stafflinewidth}{}{gregoriotex-spaces.tex}
+Dimension representing the width of a line of staff. Can vary, for
+example, at the first line.
+
+\macroname{\textbackslash gre@dimen@linewidth}{}{gregoriotex-spaces.tex}
+Dimension representing the width of the score (including initial).
+
+\macroname{\textbackslash gre@dimen@additionalbottomspace}{}{gregoriotex-spaces.tex}
+Dimension representing extra space below the staff needed for low notes.
+
+\macroname{\textbackslash gre@dimen@additionaltopspace}{}{gregoriotex-spaces.tex}
+Dimension representing extra space above the staff needed for high notes.
+
+\macroname{\textbackslash gre@dimen@textlower}{}{gregoriotex-spaces.tex}
+Dimension representing the height of the separation between the 0th
+line (which is invisible except for notes in the a or b position) and
+the bottom of the text.
+
+\macroname{\textbackslash gre@dimen@textaligncenter}{}{gregoriotex-spaces.tex}
+Dimension representing the width from the beginning of the letters in
+a syllable to the middle of the middle letters. Used for lining up
+neumes and syllables.
+
+\macroname{\textbackslash gre@dimen@additionalleftspace}{}{gregoriotex-spaces.tex}
+Dimension representing the additional space that has to be added to
+the localleftbox for a big initial (one taking two lines).
+
+\macroname{\textbackslash gre@dimen@initialwidth}{}{gregoriotex-spaces.tex}
+Dimension representing the width of the initial (and the space after).
+
+\macroname{\textbackslash gre@dimen@currentabovelinestextheight}{}{gregoriotex-spaces.tex}
+Dimension representing the space allocated above the lines for text.
+
+\macroname{\textbackslash gre@dimen@staffheight}{}{gregoriotex-spaces.tex}
+The total height of the staff including the width of the lines and the spaces between them.
+
+\macroname{\textbackslash gre@dimen@stafflinediff}{}{gregoriotex-spaces.tex}
+Distance representing the difference between the actual size of the staff lines and the ``standard'' size.
+
+\macroname{\textbackslash gre@dimen@stafflineheight}{}{gregoriotex-spaces.tex}
+The height of the staff line.
+
+\macroname{\textbackslash gre@dimen@interstafflinespace}{}{gregoriotex-spaces.tex}
+The space between the lines.
+
+\macroname{\textbackslash gre@dimen@glyphraisevalue}{}{gregoriotex-spaces.tex}
+The value that a particular glyph must be raised to be set in the correct position.
+
+\macroname{\textbackslash gre@dimen@addedraisevalue}{}{gregoriotex-spaces.tex}
+The additional raise needed for the vertical episema and the puncta.
+
+\macroname{\textbackslash gre@dimen@enddifference}{}{gregoriotex-spaces.tex}
+Distance from the end of the notes to the end of the text for the previous syllable. Positive values when notes go further than text, negative in the other case.
+
+\macroname{\textbackslash gre@dimen@previousenddifference}{}{gregoriotex-spaces.tex}
+Stored value of enddifference prior to the current one.
+
+\macroname{\textbackslash gre@skip@nextbegindifference}{}{gregoriotex-spaces.tex}
+The difference between the start of the notes and the start of the text for the next syllable. Positive when when text begins first, negative in other case.
+
+\macroname{\textbackslash gre@dimen@begindifference}{}{gregoriotex-spaces.tex}
+The difference between the start of the notes and the start of the text for the current syllable. Positive when when text begins first, negative in other case.
+
+\macroname{\textbackslash gre@dimen@lastglyphwidth}{}{gregoriotex-spaces.tex}
+The width of the last glyph.
+
+\macroname{\textbackslash gre@dimen@notesaligncenter}{}{gregoriotex-spaces.tex}
+Distance from beginning of notes to their point of alignment.
+
+\macroname{\textbackslash gre@dimen@temp@**}{}{gregoriotex-spaces.tex}
+Temporary dimensions used in calculations. There are currently five of these.
+
+\macroname{\textbackslash gre@skip@temp@**}{}{gregoriotex-spaces.tex}
+Temporary skips used in calculations. There are currently four of these.
+
+\macroname{\textbackslash gre@unit}{}{gregoriotex-spaces.tex}
+Temporary dimension used by \verb=\gre@convertto=.
+
+\macroname{\textbackslash gre@base}{}{gregoriotex-spaces.tex}
+Temporary dimension used by \verb=\gre@convertto=.
+
+\macroname{\textbackslash gre@maxlen}{}{gregoriotex-spaces.tex}
+Distance holding the maximum legal length in TeX.
+
+\macroname{\textbackslash gre@dimen@savedglyphraise}{}{gregoriotex-signs.tex}
+Macro to hold the value of the glyph raise so that it can be restored after some calculations which may change it are performed.
+
+\macroname{\textbackslash gre@skip@eolshift}{}{gregoriotex-spaces.tex}
+The left kern that should appear before an end of line.
+
+\macroname{\textbackslash gre@dimen@bolshift}{}{gregoriotex-spaces.tex}
+The left kern that should appear at the beginning of line in case of a forced line break.
+
+\macroname{\textbackslash gre@dimen@annotationtrueraise}{}{gregoriotex-spaces.tex}
+The distance from the baseline of the initial to the baseline of the annotation.
+
+\macroname{\textbackslash gre@minTextDistance}{}{gregoriotex-spaces.tex}
+Minimum distance between text (meaningful alias for \verb=\gre@skip@temp@one= inside \verb=\gre@compute@syllablefinalskip=).
+
+\macroname{\textbackslash gre@minNotesDistance}{}{gregoriotex-spaces.tex}
+Minimum distance between notes (meaningful alias for \verb=\gre@skip@temp@two= inside \verb=\gre@compute@syllablefinalskip=).
+
+\macroname{\textbackslash gre@curTextDistance}{}{gregoriotex-spaces.tex}
+Current distance between text (meaningful alias for \verb=\gre@dimen@temp@three= inside \verb=\gre@compute@syllablefinalskip=).
+
+\macroname{\textbackslash gre@curNotesDistance}{}{gregoriotex-spaces.tex}
+Current distance between notes (meaningful alias for \verb=\gre@dimen@temp@four= inside \verb=\gre@compute@syllablefinalskip=).
+
+\macroname{\textbackslash gre@minShiftText}{}{gregoriotex-spaces.tex}
+Minimum shift required for the text (meaningful alias for \verb=\gre@skip@temp@three= inside \verb=\gre@compute@syllablefinalskip=).
+
+\macroname{\textbackslash gre@minShiftNotes}{}{gregoriotex-spaces.tex}
+Minimum shift required for the notes (meaningful alias for \verb=\gre@skip@temp@four= inside \verb=\gre@compute@syllablefinalskip=).
+
+\macroname{\textbackslash gre@save@parfillskip}{}{gregoriotex-main.tex}
+Macro to store \verb=\parfillskip= value so that we can restore it at the end of the score (needed to force the last line of a score to be justified).
+
+\macroname{\textbackslash gre@scaledist}{}{gregoriotex-spaces.tex}
+Working alias for \verb=\gre@skip@temp@one= or \verb=\gre@dimen@temp@one=, as appropriate, used when rescaling a distance due to a change in \verb=\gre@factor=.
+
+\macroname{\textbackslash gre@skip@syllablefinalskip}{}{gregoriotex-spaces.tex}
+The final distance to skip at the end of a syllable.
+
+
+\subsection{Penalties}
+These are the macros that Gregorio\TeX\ uses to manipulate the penalties in order to control line and page breaks within a score without affect the surrounding text.
+
+\macroname{\textbackslash gre@penalty}{\#1}{gregoriotex-signs.tex}
+Top level function that aliases \verb=\gre@truepenalty= or \verb=\gre@falsepenalty= according to whether penalties should be in play or not.
+
+\begin{argtable}
+ \#1 & integer & The penalty to be applied or gobbled\\
+\end{argtable}
+
+\macroname{\textbackslash gre@truepenalty}{\#1}{gregoriotex-signs.tex}
+Alias for \verb=\penalty=.
+
+\begin{argtable}
+ \#1 & integer & The penalty to be applied\\
+\end{argtable}
+
+\macroname{\textbackslash gre@falsepenalty}{\#1}{gregoriotex-signs.tex}
+Macro to gobble (suppress) its argument.
+
+\begin{argtable}
+ \#1 & integer & The penalty to be gobbled\\
+\end{argtable}
+
+\macroname{\textbackslash gre@cancelpenalties}{}{gregoriotex-spaces.tex}
+Macro called at the beginning of the score to swap text penalties for score penalties.
+
+\macroname{\textbackslash gre@restorepenalties}{}{gregoriotex-spaces.tex}
+Macro called at the end of the score to restore the text penalties.
+
+\macroname{\textbackslash gre@dofinetuning}{}{gregoriotex-spaces.tex}
+Macro called at the beginning of the score to swap text penalties for score penalties.
+
+\macroname{\textbackslash gre@endfinetuning}{}{gregoriotex-spaces.tex}
+Macro called at the end of the score to restore the text penalties.
+
+\macroname{\textbackslash gre@brokenpenaltysave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the broken penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@clubpenaltysave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the club penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@widowpenaltysave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the widow penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@emergencystretchsave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the emergency stretch so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@endafterbarpenaltysave}{}{gregoriotex-main.tex}
+A place to save the current value of the end after bar penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@endafterbaraltpenaltysave}{}{gregoriotex-main.tex}
+A place to save the current value of the alternate end after bar penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@endofelementpenaltysave}{}{gregoriotex-main.tex}
+A place to save the current value of the end of element penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@endofsyllablepenaltysave}{}{gregoriotex-main.tex}
+A place to save the current value of the end of syllable penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@endofwordpenaltysave}{}{gregoriotex-main.tex}
+A place to save the current value of the end of word penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@exhyphenpenaltysave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the ex hyphen penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@hyphenpenaltysave}{}{gregoriotex-main.tex \textup{and} gregoriotex-spaces.tex}
+A place to save the current value of the hyphen penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@nobreakpenaltysave}{}{gregoriotex-main.tex}
+A place to save the current value of the no break penalty so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@doublehyphendemeritssave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the double hyphen demerits so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@finalhyphendemeritssave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the final hyphen demerits so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@loosenesssave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the looseness so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@tolerancesave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the tolerance so that we can change it temporarily and then restore it later.
+
+\macroname{\textbackslash gre@pretolerancesave}{}{gregoriotex-spaces.tex}
+A place to save the current value of the pretolerance so that we can change it temporarily and then restore it later.
+
+
+
+\subsection{\LaTeX/Plain\TeX\ compatibility}
+While every effort has been made to use only primitives which are compatible with both \LaTeX\ and Plain\TeX, it is sometimes necessary to use primitives which are defined for one but not the other (usually its \LaTeX\ that has what we need built in). In these cases we have to provide an equivalent macro to the \TeX\ version which is lacking.
+
+\macroname{\textbackslash MessageBreak}{}{gregoriotex.tex}
+Creates a line break in typeout, warning, bug, and error messages. Copied from \LaTeX\ source.
+
+\macroname{\textbackslash protect}{}{gregoriotex.tex}
+Prints the name of the macro, rather than its contents in typeout, warning, bug, and error messages. Copied from \LaTeX\ source.
+
+\macroname{\textbackslash f@size}{}{gregoriotex.tex}
+Macro which stores the current font size.
+
+
+\section{Special arguments}
+
+These arguments are used by multiple functions and take a lot of space
+to describe so we describe them once here and refer to this section
+rather than have multiple definitions.
+
+\subsection{Note Alignment Type}\label{notesalign}
+\rowcolors{1}{lightgray}{lightgray}
+\begin{tabular}{cp{10.5cm plus .5cm}}
+ \multicolumn{2}{c}{Integer with the following possibilities:} \\
+ \hline
+ 0 & one-note glyph or more than two notes glyph except porrectus : here we must put the aligncenter in the middle of the first note\\
+ 1 & two notes glyph (podatus is considered as a one-note glyph) : here we put the aligncenter in the middle of the glyph\\
+ 2 & porrectus : has a special align center\\
+ 3 & initio-debilis : same as 1 but the first note is much smaller\\
+ 4 & case of a glyph starting with a quilisma\\
+ 5 & case of a glyph starting with an oriscus\\
+ 6 & case of a punctum inclinatum\\
+ 7 & case of a stropha\\
+ 8 & flexus with an ambitus of one\\
+ 9 & flexus deminutus\\
+ 10 & virgula\\
+ 11 & divisio minima, minor and maior\\
+ 12 & divisio finalis
+ \end{tabular}
+
+\subsection{Episemus Special}\label{EpisemusSpecial}
+\definecolor{shadecolor}{named}{lightgray}%
+\begin{shaded*}%
+\vspace{-1.4\baselineskip}
+\begin{center}String with the following possibilities:\end{center}
+\vspace{-0.8\baselineskip}
+\hrule
+\vspace{-0.8\baselineskip}
+\begin{description}
+ \item[FinalPunctum] Last note, which is a standard punctum (works with pes).
+ \item[FinalDeminutus] Same, but the last note is a deminutus.
+ \item[PenultBeforePunctumWide] The note before the last note, which is a standard punctum.
+ \item[PenultBeforeDeminutus] Idem, but the note is the note preceding a deminutus.
+ \item[AntepenultBeforePunctum] The note before the note before the last note (for porrectus flexus).
+ \item[AntepenultBeforeDeminutus] Idem, but when the two last notes are a deminutus.
+ \item[InitialPunctum] The first note, if it is a standard punctum.
+ \item[InitioDebilis] The first note, if it is an initio debilis.
+ \item[PorrNonAuctusInitialWide] first note of a non-auctus porrectus with a second ambitus of at least two.
+ \item[PorrNonAuctusInitialOne] first note of a non-auctus porrectus with a second ambitus of one
+ \item[PorrAuctusInitialAny] first note of an auctus porrectus, regardless of second ambitus
+ \item[FinalInclinatum] punctum inclinatum as last note
+ \item[FinalInclinatumDeminutus] punctum inclinatum deminutus as last note
+ \item[FinalStropha] stropha as last note
+ \item[FinalQuilisma] quilisma as last note
+ \item[FinalOriscus] oriscus as last note
+ \item[PenultBeforePunctumOne] second-to-last note, with a second ambitus of one, when last note is a standard punctum (like the second note of ghg)
+ \item[FinalUpperPunctum] "upper smaller punctum" as last note (concerning simple podatus, podatus, and torculus resupinus)
+ \item[InitialOriscus] oriscus as first note, disconnected from next note
+ \item[InitialQuilisma] quilisma as first note, disconnected from next note
+ \item[TorcResNonAuctusSecondWideWide] second note of a non-auctus torculus resupinus starting with a punctum, with a first and second ambitus of at least two
+ \item[TorcResNonAuctusSecondOneWide] second note of a non-auctus torculus resupinus starting with a punctum, with a first ambitus of one and a second ambitus of at least two
+ \item[TorcResDebilisNonAuctusSecondAnyWide] second note of a non-auctus torculus resupinus initio debilis with any first ambitus and a second ambitus of at least two
+ \item[FinalLineaPunctum] linea punctum (cavum) as last note
+ \item[BarStandard] standard bar
+ \item[BarVirgula] virgula
+ \item[BarDivisioFinalis] divisio finalis
+ \item[TorcResQuilismaNonAuctusSecondWideWide] second note of a non-auctus torculus resupinus starting with a quilisma, with a first and second ambitus of at least two
+ \item[TorcResOriscusNonAuctusSecondWideWide] second note of a non-auctus torculus resupinus starting with an oriscus, with a first and second ambitus of at least two
+ \item[TorcResQuilismaNonAuctusSecondOneWide] second note of a non-auctus torculus resupinus starting with a quilisma, with a first ambitus of one and and second ambitus of at least two
+ \item[TorcResOriscusNonAuctusSecondOneWide] second note of a non-auctus torculus resupinus starting with an oriscus, with a first ambitus of one and and second ambitus of at least two
+ \item[TorcResNonAuctusSecondWideOne] second note of a non-auctus torculus resupinus starting with a punctum, with a first ambitus of at least two and a second ambitus of one
+ \item[TorcResDebilisNonAuctusSecondAnyOne] second note of a non-auctus torculus resupinus initio debilis with any first ambitus and a second ambitus of one
+ \item[TorcResQuilismaNonAuctusSecondWideOne] second note of a non-auctus torculus resupinus starting with a quilisma, with a first ambitus of at least two and a second ambitus of one
+ \item[TorcResOriscusNonAuctusSecondWideOne] second note of a non-auctus torculus resupinus starting with an oriscus, with a first ambitus of at least two and a second ambitus of one
+ \item[TorcResNonAuctusSecondOneOne] second note of a non-auctus torculus resupinus starting with a punctum, with a first and second ambitus of one
+ \item[TorcResQuilismaNonAuctusSecondOneOne] second note of a non-auctus torculus resupinus starting with a quilisma, with a first and second ambitus of one
+ \item[TorcResOriscusNonAuctusSecondOneOne] second note of a non-auctus torculus resupinus starting with an oriscus, with a first and second ambitus of one
+ \item[TorcResAuctusSecondWideAny] second note of an auctus torculus resupinus starting with a punctum, with a first ambitus of at least two and any second ambitus
+ \item[TorcResDebilisAuctusSecondAnyAny] second note of an auctus torculus resupinus initio debilis with any first and second ambitus
+ \item[TorcResQuilismaAuctusSecondWideAny] second note of an auctus torculus resupinus starting with a quilisma, with a first ambitus of at least two and any second ambitus
+ \item[TorcResOriscusAuctusSecondWideAny] second note of an auctus torculus resupinus starting with an oriscus, with a first ambitus of at least two and any second ambitus
+ \item[TorcResAuctusSecondOneAny] second note of an auctus torculus resupinus starting with a punctum, with a first ambitus of one and any second ambitus
+ \item[TorcResQuilismaAuctusSecondOneAny] second note of an auctus torculus resupinus starting with a quilisma, with a first ambitus of one and any second ambitus
+ \item[TorcResOriscusAuctusSecondOneAny] second note of an auctus torculus resupinus starting with an oriscus, with a first ambitus of one and any second ambitus
+ \item[ConnectedPenultBeforePunctumWide] second-to-last note connected to prior note, with a second ambitus of at least two, when last note is a standard punctum (like the second note of \textit{gig})
+ \item[ConnectedPenultBeforePunctumOne] second-to-last note connected to prior note, with a second ambitus of one, when last note is a standard punctum (like the second note of \textit{gih})
+ \item[InitialConnectedPunctum] standard punctum as first note, connected to next higher note
+ \item[InitialConnectedVirga] "virga" as first note, connected to next lower note
+ \item[InitialConnectedQuilisma] quilisma as first note, connected to next higher note
+ \item[InitialConnectedOriscus] oriscus as first note, connected to next higher note
+ \item[FinalConnectedPunctum] punctum as last note, connected to prior higher note
+ \item[FinalConnectedAuctus] auctus as last note, connected to prior lower note
+ \item[FinalVirgaAuctus] virga aucta as last note
+ \item[FinalConnectedVirga] "virga" as last note, connected to prior lower note
+ \item[InitialVirga] "virga" as first note, disconnected from next note
+\end{description}
+\end{shaded*}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "GregorioRef"
+%%% End:
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Gabc.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Gabc.tex
new file mode 100644
index 00000000000..64c5d97a32f
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Gabc.tex
@@ -0,0 +1,207 @@
+\section{The GABC File}
+
+gabc is a simple notation based exclusively on ASCII characters that
+enables the user to describe Gregorian chant scores. The name
+\textit{gabc} was given in reference to the
+\href{http://www.walshaw.plus.com/abc/}{ABC} notation for modern
+music.
+
+The gabc notation was developed by a monk of the
+\href{http://www.barroux.org}{Abbey of Sainte Madeleine du Barroux}
+and has been improved by Élie Roux and by other monks of the same
+abbey to produce the best possible notation.
+
+This section will cover the elements of a gabc file.
+
+\subsection{File Structure}
+Files written in gabc have the extension \texttt{.gabc} and have the
+following structure:
+
+\begin{lstlisting}
+name: incipit;
+gabc-copyright: copyright on this gabc file;
+score-copyright: copyright on the source score;
+office-part: introitus/...;
+occasion: in church calendar;
+meter: for metrical hymns;
+commentary: source of words;
+arranger: name of arranger;
+gabc-version: 0.9.3;
+author: if known;
+date: xi c;
+manuscript: ms name;
+manuscript-reference: e.g. CAO reference;
+manuscript-storage-place: library/monastery;
+book: from which score taken;
+transcriber: writer of gabc;
+transcription-date: 2009;
+initial-style: 1;
+user-notes: whatever other comments you wish to make;
+mode: 6;
+annotation: IN.;
+annotation: 6;
+%%
+(clef) text(notes)
+\end{lstlisting}
+
+In each case, replace whatever is between the colon and semi-colon
+\texttt{(:...;)} with the appropriate character string. Of these attributes,
+only name is mandatory. Descriptions of how these header fields are
+intended to be used are below. If you wish to write a value over
+several lines, omit the semicolon at the end of the first line, and
+end the attribute value with \texttt{;;} (two semicolons).
+
+\subsection{Header}
+
+Here is a detailed description of each header field:
+
+\begin{description}
+\item[name] This is the name of the piece, in almost all cases the
+ incipit, the first few words. In the case of the mass ordinary, the
+ form as \texttt{Kyrie X Alme Pater} or \texttt{Sanctus XI} is
+ recommended where appropriate. \textbf{This field is required.}
+\item[mode] The mode of the piece. This should normally be an arabic
+ number between 1 and 8, but may be any text required for unusual
+ cases. The mode number will be converted to roman numerals and
+ placed above the initial unless one of the following conditions are
+ met:
+ \begin{itemize}
+ \item There is a \verb=\greannotation= defined immediatly prior to \verb=\gregorioscore=.
+ \item The \texttt{annotation} header field is defined.
+ \end{itemize}
+\item[annotation] The annotation is the text to appear above the
+ initial letter. Usually this is an abbreviation of the office-part
+ in the upper line, and an indication of the mode (and differentia
+ for antiphons) in the lower. Either one or two annotation fields may
+ be used; if two are used, the first is the upper line, the second
+ the lower. Example:
+ \begin{lstlisting}
+ annotation:Ad Magnif.;
+ annotation:VIII G;
+ \end{lstlisting}
+ Full \TeX markup is accepted:
+ \begin{lstlisting}
+ annotation:{\color{red}Ad Magnif.};
+ annotation:{\color{red}VIII G};
+ \end{lstlisting}
+ If the user already defined annotation(s) in the main TeX file via
+ \verb=\greannotation= then the \texttt{annotation} header field will not
+ overwrite that definition.
+
+\end{description}
+
+\subsection{Lyric Centering}
+
+Gregorio centers the text of each syllable around the first note of each
+syllable. There are two basic modes: \verb:\setlyriccentering{syllable}:
+and \verb:\setlyriccentering{vowel}:. In \texttt{syllable} mode, the
+entire syllable is centered around the first note. This is common in
+modern music. In \texttt{vowel} mode, the vowel sound of the syllable is
+centered around the first note. This is common in most Gregorian chant
+books with text in Latin.\bigskip
+
+The default rules built into Gregorio for \texttt{vowel} mode are for
+Ecclesiatical Latin and work fairly well (though not perfectly) for
+other languages (especially Romance languages). However, Gregorio
+provides a gabc \texttt{language} header which allows the language of
+the lyrics to be set. Gregorio will look for a file named
+\texttt{gregorio-vowels.dat} in your working directory or amongst the
+GregorioTeX files. If it finds the requested language (matched in a
+\emph{case-sensitive} fashion) in one of these files (henceforth called
+vowel files), Gregorio will use the rules contained within for vowel
+centering. If it cannot find the requested language in any of the vowel
+files or is unable to parse the rules, Gregorio will fall back on the
+Latin rules. If multiple vowel files have the desired language,
+Gregorio will use the first matching language section in the first
+matching file, according to Kpathsea order. You may wish to enable
+verbose output (by passing the \texttt{-v} argument to
+\texttt{gregorio}), if there is a problem, for more information.\bigskip
+
+The vowel file is a list of statements, each starting with a keyword and
+ending with a semicolon (\texttt{;}). Multiple statements with the same
+keyword are allowed, and all will apply. Comments start with a hash
+symbol (\texttt{\#}) and end at the end of the line.\bigskip
+
+In general, Gregorio does no case folding, so the keywords and language
+names are case-sensitive and both upper- and lower-case characters
+should be listed after the keywords if they should both be considered in
+their given categories.\bigskip
+
+The keywords are:
+
+\begin{description}
+
+\item[alias]
+
+The \texttt{alias} keyword indicates that a given name is an alias for a
+given language. The \texttt{alias} keyword must be followed by the name
+of the alias (enclosed in square brackets), the \texttt{to} keyword, the
+name of the target language (enclosed in square brackets), and a
+semicolon. Since gregorio reads the vowel files sequentially, aliases
+should precede the language they are aliasing, for best performance.
+
+\item[language]
+
+The \texttt{language} keyword indicates that the rules which follow are
+for the specified language. It must be followed by the language name,
+enclosed in square brackets, and a semicolon. The language specified
+applies until the next language statement.
+
+\item[vowel]
+
+The \texttt{vowel} keyword indicates that the characters which follow,
+until the next semicolon, should be considered vowels.
+
+\item[prefix]
+
+The \texttt{prefix} keyword lists strings of characters which end in a
+vowel, but when followed by a sequence of vowels, \emph{should not} be
+considered part of the vowel sound.  These strings follow the keyword
+and must be separated by space and end with a semicolon.  Examples of
+prefixes include \emph{i} and \emph{u} in Latin and \emph{qu} in
+English.
+
+\item[suffix]
+
+The \texttt{suffix} keyword lists strings of characters which don't
+start with a vowel, but when appearing after a sequence of vowels,
+\emph{should} be considered part of the vowel sound.  These strings
+follow the keyword and must be separated by space and end with a
+semicolon. Examples of suffixes include \emph{w} and \emph{we} in
+English and \emph{y} in Spanish.
+
+\item[secondary]
+
+The "secondary" keyword lists strings of characters which do not contain
+vowels, but for which, when there are no vowels present in a syllable,
+define the center of the syllable. These strings follow the keyword and
+must be separated by space and end with a semicolon. Examples of
+secondary sequences include \emph{w} from Welsh loanwords in English and
+the syllabic consonants \emph{l} and \emph{r} in Czech.
+
+\end{description}
+
+By way of example, here is a vowel file that works for English:
+
+\begin{lstlisting}
+alias [english] to [English];
+
+language [English];
+
+vowel aàáAÀÁ;
+vowel eèéëEÈÉË;
+vowel iìíIÌÍ;
+vowel oòóOÒÓ;
+vowel uùúUÙÚ;
+vowel yỳýYỲÝ;
+vowel æǽÆǼ;
+vowel œŒ;
+
+prefix qu Qu qU QU;
+prefix y Y;
+
+suffix w W;
+suffix we We wE WE;
+
+secondary w W;
+\end{lstlisting}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef-4_0_0-beta2.pdf b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef-4_0_0-beta2.pdf
new file mode 100644
index 00000000000..62b6eb82f03
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef-4_0_0-beta2.pdf
Binary files differ
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef.tex
new file mode 100644
index 00000000000..e040e4da6b4
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioNabcRef.tex
@@ -0,0 +1,1249 @@
+% !TEX program = LuaLaTeX+se
+
+\documentclass[a4paper]{article}
+\usepackage{color}
+\usepackage{luacode}
+\usepackage[margin=1cm]{geometry}
+\usepackage{fontspec}
+\usepackage{multicol}
+\usepackage{fixltx2e}
+\usepackage{hyperref}
+\usepackage{color}
+\usepackage{gregoriotex}
+\usepackage{longtable}
+\usepackage{supertabular}
+\usepackage{carolmin}
+\setlength{\columnsep}{0.3cm} \setlength{\columnseprule}{1pt}
+\setmainfont{Linux Libertine O}
+\pagestyle{empty}
+\begin{document}
+
+\begin{center}
+\huge{nabc language for gregorio}
+\end{center}
+
+ \vspace{1.5cm}
+ \begingroup%
+ \gredefbarredsymbol{Vbar}{V}{greVBar}{9.5}{0.05em}{0pt}%
+ \greannotation{\scriptsize{AL}}
+ \greannotation{\scriptsize{II}}
+ \color{black!60}
+ \setmainfont[SmallCapsFont=AlegreyaSC]{Alegreya}%
+ \addtolength{\hsize}{-4cm}%
+ \setlength{\fboxsep}{5mm}%
+ \begin{list}{}{%
+ \setlength{\topsep}{0pt}%
+ \setlength{\leftmargin}{1.5cm}%
+ \setlength{\rightmargin}{1.5cm}%
+ \setlength{\listparindent}{0pt}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\parsep}{0pt}%
+ }\item[]{\fbox{\parbox{\hsize}{\gregorioscore[f]{veni}}}}%
+ \end{list}%
+ \endgroup%
+
+\vfill
+\pagebreak
+
+\gresetnabcfont{gresgmodern}{8}
+\gresetnabcfont{gregall}{8}
+
+\def\neume#1{%
+ \begingroup %
+ \catcode`\~=12{}%
+ \catcode`\@=11{}%
+ \vbox{\hbox{\vspace{1mm}}\hbox{\noindent\GreNABCChar{#1}\hspace{1mm}}%
+ \hbox{\vspace{1mm}}\hbox{\noindent{\fontsize{6}{6}\texttt{#1}\hspace{1mm}}}}%
+ \endgroup %
+}
+
+\def\neumer#1{%
+ \begingroup %
+ \catcode`\~=12{}%
+ \catcode`\@=11{}%
+ \vbox{\hbox{\vspace{1mm}}\hbox{\noindent\hspace{8mm}\GreNABCChar{#1}\hspace{1mm}}%
+ \hbox{\vspace{1mm}}\hbox{\noindent{\fontsize{6}{6}\texttt{#1}\hspace{1mm}}}}%
+ \endgroup %
+}
+
+\def\sneume#1{%
+ \begingroup %
+ \catcode`\~=12{}%
+ \catcode`\@=11{}%
+ \font\grefontnabc={name:gregall} at 6pt\grefontnabc\begin{gre@style@nabc}%
+ \directlua{tex.sprint(gregoriotex.nabc_font_tables["gregall"]["\luatexluaescapestring{#1}"] or "")}%
+ \end{gre@style@nabc}%
+ \endgroup %
+}
+
+{
+\setlength\parindent{0cm}
+
+The \texttt{nabc} language provides the ability to describe some adiastematic neumes, for
+now just the St.\ Gallen style. The language is partially based on Dom
+Eugène Cardine's Table of neumatic signs, but for more complex neumes
+doesn't always match how the neumes are called; instead attempts to make it
+easier to compose complex neumes from basic glyphs. To describe
+adiastematic neumes in \texttt{gabc}, the header should contain
+\texttt{nabc-lines: 1;} line, like:
+
+\begin{verbatim}
+nabc-lines: 1;
+(f3) AL(ef~|ta>)le(fg/hggf|peclhgpi)lú(ef~|ta>)ia.(f.|ta-) (,)
+(ii//|bv-|gh!ivHG//|vi-hhppu2su1sut1|fhg/|to|eef.|pt) (;)
+\end{verbatim}
+
+The \texttt{nabc} snippets are then separated by \texttt{|} character from
+\texttt{gabc} snippets or other \texttt{nabc} snippets. Every \texttt{gabc}
+snippet may be followed by multiple \texttt{nabc} snippets. The maximum
+number of consecutive \texttt{nabc} snippets is the number declared in the
+header field \texttt{nabc-lines: x;}. After reaching that number of
+consecutive \texttt{nabc} snippets another \texttt{gabc} snippet followed
+by \texttt{nabc} snippets can follow. A single \texttt{nabc} snippet is not
+split into multiple lines, so for larger melismatic pieces it is desirable
+to synchronize the \texttt{gabc} snippets with corresponding \texttt{nabc}
+snippets. With \texttt{nabc-lines: 1;} the
+\texttt{gabc} and \texttt{nabc} snippets form an alternating pattern, like
+\texttt{(gabc|nabc|gabc|nabc|gabc)}, in this case the last \texttt{gabc}
+snippet does not have any corresponding \texttt{nabc} neumes. With
+\texttt{nabc-lines: 2;} the snippets ordering could be
+e.g.\ \texttt{(gabc|nabc1|nabc2|gabc|nabc1)}.
+
+Each \texttt{nabc} snippet consists of a sequence of \textit{complex neume
+descriptors}. Each \textit{complex neume descriptor} consists of
+optional \textit{horizontal spacing adjustment descriptor}, then \textit{complex glyph
+descriptor}, optionally followed by a sequence of \textit{subpunctis and prepunctis
+descriptor}s, optionally followed by a sequence of \textit{significant letter
+descriptor}s.
+
+The \textit{horizontal spacing adjustment descriptor}
+consists of a sequence of horizontal spacing adjustment characters
+\texttt{/} and \texttt{`}.
+\begin{itemize}
+ \item \texttt{//} move by \texttt{nabclargerspace} skip to the right
+ \item \texttt{/} move by \texttt{nabcinterelementspace} skip to the right
+ \item \texttt{``} move by \texttt{nabclargerspace} skip to the left
+ \item \texttt{`} move by \texttt{nabcinterelementspace} skip to the left
+\end{itemize}
+
+The \textit{complex glyph descriptor} consists of a \textit{glyph descriptor},
+optionally followed by a sequence of other \textit{glyph descriptor}s, all
+separated by the \texttt{!} character. This is used to describe more
+complex glyphs, where certain basic glyphs are connected together.
+
+Each \textit{glyph descriptor} consists of a \textit{basic glyph descriptor},
+followed by optional \textit{glyph modifiers}, followed by optional
+\textit{pitch descriptor}.
+
+The \textit{basic glyph descriptor} is a two-letter string from the
+following table:
+\begin{multicols}{5}
+\texttt{vi} \sneume{vi} virga\\
+\texttt{pu} \sneume{pu} punctum\\
+\texttt{ta} \sneume{ta} tractulus\\
+\texttt{gr} \sneume{gr} gravis\\
+\texttt{cl} \sneume{cl} clivis\\
+\texttt{pe} \sneume{pe} pes\\
+\texttt{po} \sneume{po} porrectus\\
+\texttt{to} \sneume{to} torculus\\
+\texttt{ci} \sneume{ci} climacus\\
+\texttt{sc} \sneume{sc} scandicus\\
+\texttt{pf} \sneume{pf} porrectus flexus\\
+\texttt{sf} \sneume{sf} scandicus flexus\\
+\texttt{tr} \sneume{tr} torculus resupinus\\
+\texttt{st} \sneume{st} stropha\\
+\texttt{ds} \sneume{ds} distropha\\
+\texttt{ts} \sneume{ts} tristropha\\
+\texttt{tg} \sneume{tg} trigonus\\
+\texttt{bv} \sneume{bv} bivirga\\
+\texttt{tv} \sneume{tv} trivirga\\
+\texttt{pr} \sneume{pr} pressus maior\\
+\texttt{pi} \sneume{pi} pressus minor\\
+\texttt{vs} \sneume{vs} virga strata\\
+\texttt{or} \sneume{or} oriscus\\
+\texttt{sa} \sneume{sa} scandicus\\
+\texttt{pq} \sneume{pq} pes quassus\\
+\texttt{ql} \sneume{ql} quilisma (3 loops)\\
+\texttt{qi} \sneume{qi} quilisma (2 loops)\\
+\texttt{pt} \sneume{pt} pes stratus
+\end{multicols}
+
+The \texttt{glyph modifiers} is a possibly empty sequence of following
+characters optionally followed by a number:
+\begin{itemize}
+ \item \texttt{S} modification of the mark
+ \item \texttt{G} modification of the grouping (neumatic break)
+ \item \texttt{M} melodic modification
+ \item \texttt{-} addition of episema
+ \item \texttt{>} augmentive liquescence
+ \item ~~\texttt{\~} diminutive liquescence
+\end{itemize}
+If Dom Cardine's table contains multiple glyphs with the same modifiers,
+a positive number is added afterwards. E.g.\ for augmentive liquescent
+clivis the table shows two different glyphs, the ancus \texttt{cl>} \sneume{cl>}
+and then another neume - \texttt{cl>1} \sneume{cl>1}, the first neume does
+not contain any number after it, while the \texttt{1} indicates first
+variant.
+
+The \textit{pitch descriptor} allows to specify the vertical position of the
+neume. There are no staves, so the vertical position is only rough. For
+pitches the same letters as in \texttt{gabc} are used, \texttt{a} through
+\texttt{m}. If the \textit{pitch descriptor} is missing, the default is
+\texttt{hf}, otherwise it consists of the letter \texttt{h} followed by
+the pitch letter. Within the \textit{complex glyph descriptor}, each
+\textit{basic glyph descriptor} has its own pitch, but in the current fonts
+there are no glyphs with different relative pitches, so if you use a
+\textit{pitch descriptor} on any of the \textit{basic glyph descriptor}s
+in the \textit{complex glyph descriptor}, it is best to use the same one on all
+the other \textit{basic glyph descriptor}s in the same \textit{complex glyph descriptor}.
+
+The \textit{subpunctis and prepunctis descriptor} consists of the letters
+\texttt{su} for subpunctis or \texttt{pp} for prepunctis, followed
+optionally by a modifier letter from the following table and finally a mandatory
+positive number of repetitions. If the modifier letter is missing, it is a
+punctum.
+\begin{itemize}
+ \item \texttt{t} \sneume{ta} tractulus
+ \item \texttt{u} \sneume{ta-} tractulus with episema
+ \item \texttt{v} \sneume{suv1} tractulus with double episema
+ \item \texttt{w} \sneume{gr} gravis
+ \item \texttt{x} \sneume{st>} liquescens stropha
+ \item \texttt{y} \sneume{gr-} gravis with episema
+\end{itemize}
+Only subpunctis are normally used in neume classification, the prepunctis is
+a \texttt{nabc} concept to describe the rising sequence of punctis, tractulis
+etc.\ in the left low corner of some neume. While e.g.\ \texttt{vipp2}
+\sneume{sc} describes the same neume as \texttt{sc} \sneume{sc}, the
+former form allows better control on how many punctis or tractulis or
+tractulis with episema etc.\ there are. Some examples:
+\texttt{ppt3} \sneume{ppt3} stands for 3 raising tractulis with episema,
+while \texttt{su1sut1sux1} \sneume{su1sut1sux1} stands for a punctum,
+followed by tractulus, followed by liquescens stropha.
+
+The \textit{significant letter descriptor} consists of the letters
+\texttt{ls}, followed by a shorthand of the significant letter or common
+group of them, followed by a number - a rough position relative to the
+\textit{complex glyph descriptor} glyph with prepunctis and subpunctis
+attached to it. If more than one \textit{significant letter descriptor}
+is used on the same \textit{complex neume descriptors} for the same
+position, then they are ordered in the order they are written in the
+\texttt{nabc} snippet at that position. The position numbers are:
+
+
+\makebox[6cm][l]{\texttt{1} \GreNABCChar{vilsc1} left upper corner}
+\makebox[6cm][l]{\texttt{2} \GreNABCChar{vilsc2} above the neume}
+\makebox[6cm][l]{\texttt{3} \GreNABCChar{vilsc3} right upper corner}\\
+\makebox[6cm][l]{\texttt{4} \GreNABCChar{vilsc4} to the left of the neume}
+\makebox[6cm][l]{}
+\makebox[6cm][l]{\texttt{6} \GreNABCChar{vilsc6} to the right of the neume}\\
+\makebox[6cm][l]{\texttt{7} \GreNABCChar{vilsc7} left bottom corner}
+\makebox[6cm][l]{\texttt{8} \GreNABCChar{vilsc8} below the neume}
+\makebox[6cm][l]{\texttt{9} \GreNABCChar{vilsc9} right bottom corner}\\
+
+
+The shorthands, including the \texttt{ls} prefix, which should be followed
+by the above mentioned position digit:
+\begin{multicols}{3}
+\texttt{lsal} \sneume{lsal} altius\\
+\texttt{lsam} \sneume{lsam} altius mediocriter\\
+\texttt{lsb} \sneume{lsb} bene\\
+\texttt{lsc} \sneume{lsc} celeriter\\
+\texttt{lscm} \sneume{lscm} celeriter mediocriter\\
+\texttt{lsco} \sneume{lsco} coniunguntur\\
+\texttt{lscw} \sneume{lscw} celeriter (wide form)\\
+\texttt{lsd} \sneume{lsd} deprimatur\\
+\texttt{lse} \sneume{lse} equaliter\\
+\texttt{lseq} \sneume{lseq} equaliter\\
+\texttt{lsew} \sneume{lsew} equaliter (wide form)\\
+\texttt{lsfid} \sneume{lsfid} fideliter\\
+\texttt{lsfr} \sneume{lsfr} frendor\\
+\texttt{lsg} \sneume{lsg} gutture\\
+\texttt{lsi} \sneume{lsi} iusum\\
+\texttt{lsim} \sneume{lsim} iusum mediocriter\\
+\texttt{lsiv} \sneume{lsiv} iusum valde\\
+\texttt{lsk} \sneume{lsk} klenche\\
+\texttt{lsl} \sneume{lsl} levare\\
+\texttt{lslb} \sneume{lslb} levare bene\\
+\texttt{lslc} \sneume{lslc} levare celeriter\\
+\texttt{lslen} \sneume{lslen} leniter\\
+\texttt{lslm} \sneume{lslm} levare mediocriter\\
+\texttt{lslp} \sneume{lslp} levare parvum\\
+\texttt{lslt} \sneume{lslt} levare tenere\\
+\texttt{lsm} \sneume{lsm} mediocriter\\
+\texttt{lsmoll} \sneume{lsmoll} molliter\\
+\texttt{lsp} \sneume{lsp} parvum\\
+\texttt{lspar} \sneume{lspar} paratim\\
+\texttt{lspfec} \sneume{lspfec} perfecte\\
+\texttt{lspm} \sneume{lspm} parvum mediocriter\\
+\texttt{lss} \sneume{lss} sursum\\
+\texttt{lssb} \sneume{lssb} sursum bene\\
+\texttt{lssc} \sneume{lssc} sursum celeriter\\
+\texttt{lssimil} \sneume{lssimil} similiter\\
+\texttt{lssimul} \sneume{lssimul} simul\\
+\texttt{lssm} \sneume{lssm} sursum mediocriter\\
+\texttt{lsst} \sneume{lsst} sursum tenere\\
+\texttt{lssta} \sneume{lssta} statim\\
+\texttt{lst} \sneume{lst} tenere\\
+\texttt{lstb} \sneume{lstb} tenere bene\\
+\texttt{lstm} \sneume{lstm} tenere mediocriter\\
+\texttt{lstw} \sneume{lstw} tenere (wide form)\\
+\texttt{lsv} \sneume{lsv} valde\\
+\texttt{lsvol} \sneume{lsvol} volubiliter\\
+\texttt{lsx} \sneume{lsx} expectare
+\end{multicols}
+
+Finally a commented example of a \texttt{nabc} snippet:
+
+\texttt{```po////pe>2lse7lsl3qlhh!vshhppt1sut2ql>ppu3}
+
+\GreNABCChar{```po////pe>2lse7lsl3qlhh!vshhppt1sut2ql>ppu3}
+
+\texttt{```} stands for a negative horizontal skip (move to the left)
+by \texttt{nabcinterelementspace} and \texttt{nabclargerspace}.
+
+\texttt{po} \sneume{po} is a basic porrectus, at the default pitch
+(height \texttt{hf}).
+
+\texttt{////} stands for a horizontal skip (move to the right) by
+two times \texttt{nabclargerspace}.
+
+\texttt{pe>2lse7lsl3} \GreNABCChar{pe>2lse7lsl3} stands for the
+3rd augmentive liquescent form of podatus (epiphonus with tractulus, see the
+following page) at the default pitch, with equaliter in the low left corner
+and levare in the upper right corner.
+
+\texttt{qlhh!vshhppt1sut2} \GreNABCChar{qlhh!vshhppt1sut2} stands for
+a 3 loop quilisma joined with virga strata, both at relative pitch 2 above
+the default one, with a single tractulus before it and two subpunctis -
+tractulis.
+
+\texttt{ql>ppu3} \GreNABCChar{ql>ppu3} is a 3 loop liquescent quilisma
+with 3 tractulis with episema before it.
+}
+
+\vfill
+\pagebreak
+
+{
+\noindent\footnotesize
+\begin{tabular}{|l|l|l|l|l|l|l|l|l|}
+\hline
+Names of & Simple & \multicolumn{4}{c|}{Symbols differentiated by} & \multicolumn{3}{c|}{Symbols indicating} \\
+Symbols & Symbols & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{a special meaning} \\ \hline
+& & \multicolumn{2}{c|}{the addition} & \multicolumn{2}{c|}{the modification} & melodic & \multicolumn{2}{c|}{phonetic} \\ \cline{3-9}
+& & of letters & of episemas & of the mark & of the grouping & & \multicolumn{2}{c|}{liquescence} \\ \cline{8-9}
+& & & & & (neumatic break) & & augment.\ & dimi \\
+& & & & & & & & nut.\ \\ \cline{3-6}\cline{8-9}
+virga & \neume{vi} & \neume{vilsc3}\neume{vilst1}\neume{vippt1lsc2} & \neume{vi-} & & & & \neume{vi>} & \\
+tractulus & \neume{ta} & \neume{talsc3}\neume{talst2} & & & & & \neume{ta>} & \\
+punctum & \neume{pu} & & & & & & \neume{st}\neume{visu1sux1} & \\
+gravis & \neume{gr} & & & & & & & \\
+clivis & \neume{cl} & \neume{cllsc3}\neume{cllst2}\neume{cl-lst2} & \neume{cl-}\neume{clS-} & \neume{clS}\neume{clS1} & & \neume{clM} & \neume{cl>}\neume{cl>1} & \neume{cl~} \\
+pes & \neume{pe} & & \neume{pe-}\neume{pe-1} & \neume{peS} & \neume{peG} & \neume{peG} & \neume{pe>}\neume{pe>1}\neume{pe>2} & \neume{pe~} \\
+porrectus & \neume{po} & \neume{polsc2} & \neume{po-}\neume{po-1} & & \neume{poG} & & \neume{po>} & \neume{po~} \\
+torculus & \neume{to} & \neume{tolsc3}\neume{tolsc4lst3}\neume{tolst2} & \neume{to-}\neume{to-1} & \neume{toS}\neume{toS1}\neume{toS2}\neume{toS3} & \neume{toG} & \neume{toM}\neume{toM1} & \neume{to>} & \neume{pe>} \\
+climacus & \neume{ci}\neume{ci1} & \neume{cilsc3}\neume{cilst2} & \neume{ci-} & \neume{ciS}\neume{ciS1}\neume{visut1su2} & \neume{ciG}\neume{ciG1} & \neume{ciM} & \neume{ci>} & \neume{ci~} \\
+scandicus & \neume{sc} & & \neume{sc-} & \neume{scS} & \neume{scG}\neume{scG1} & \multicolumn{1}{r|}{\neume{scM1}} & \neume{sc>} & \neume{sc~} \\
+& \multicolumn{1}{r|}{\neume{sc1}} & & \multicolumn{1}{r|}{\neumer{vi-hevi-hivi-hm}} & & & \neume{vihevihivihm} & & \\
+\vbox{\hbox{porrectus}\hbox{flexus}} & \neume{pf} & \neume{pflsc2}\neume{pf1lsc2}\neume{pflst2} & \neume{pf-} & \neume{pfS} & \neume{sfM} & \neume{pfM} & \neume{pf>} & \neume{pf~} \\
+\vbox{\hbox{pes}\hbox{subbipunctis}} & \neume{pesu2} & \neume{vippt1su2lsc3} & \neume{pe-su2}\neume{pe-1su2} & \neume{peSsu2}\neume{peSsut2} & \neume{vippt1su2} & \neume{vi-!ci}\neume{pesu1suw1} & \neume{pesu1sux1} & \neume{to>} \\
+& & & \multicolumn{1}{r|}{\neume{pe-1sut2}} & & \multicolumn{1}{r|}{\neume{toS2sut1}} & & & \\
+\vbox{\hbox{scandicus}\hbox{flexus}} & \neume{sf} & \neume{sflsc3} & \neume{sf-} & \neume{sfS} & \neume{vi-tohk}\neume{peclhi} & \neume{sfM} & \neume{cl>ppt2} & \neume{sc>} \\
+\vbox{\hbox{torculus}\hbox{resuspinus}} & \neume{tr} & \neume{trlsc2}\neume{trlst2} & \multicolumn{1}{r|}{\neume{tr-1}} & \neume{trS} & \neume{trG}\neume{trG1}\neume{trG2} & \neume{trM} & \neume{tr>} & \neume{tr~} \\ \hline
+apostropha & \neume{st} & & \neume{st-} & \neume{stS} & & & \neume{st>} & \\
+distropha & \neume{ds} & \neume{ds-lsx6} & \neume{ds-} & & & & \neume{ds>} & \\
+tristropha & \neume{ts} & \neume{ts-lsx6} & \neume{ts-} & & & \neume{tsM} & \neume{ts>} & \\
+trigonus & \neume{tg}\neume{tg1} & & & \neume{tgS}\neume{tgS1}\neume{tgS3} & & \neume{tgM} & & \neume{ds>} \\
+\vbox{\hbox{bigirga \&}\hbox{trivirga}} & \neume{bv}\neume{tv} & & \neume{bv-}\neume{tv-} & & & & \neume{bv>} & \\ \hline
+pressus & \neume{pr}\neume{pi} & \neume{prlsc2}\neume{pr-lsc2}\neume{prlst2} & \neume{pr-} & & & \neume{prM} & \neume{pr>}\neume{pi>} & \neume{vs>} \\
+& & \neume{pilsc2}\neume{pilst2} & & & & & & \neume{or>} \\
+\vbox{\hbox{virga}\hbox{strata}} & \neume{vs} & \neume{vslsc3}\neume{vslst2} & \neume{vs-} & & & & \neume{vs>} & \neume{ta>} \\
+oriscus & \neume{or} & & & & & & \neume{or>} & \\
+salicus & \neume{sa}\neume{sa1} & \neume{salsfr1}\neume{saM1lsfr1} & \neume{sa-}\neume{sa-1} & & \neume{saG} & \neume{saM}\neume{saM1}\neume{saM2} & \neume{sa>}\neume{sa->1} & \neume{pe>2} \\
+pes quassus & \neume{pq} & \neume{pqlsfr1} & \neume{pq-} & & & & \neume{pq>} & \\
+quilisma & \neume{ql}\neume{qi} & & \neume{ql-}\neume{qi-} & & & & \neume{ql>}\neume{qi>} & \\ \hline
+\vbox{\hbox{pes}\hbox{stratus}} & \neume{pt} & & & & & & & \\ \hline
+\end{tabular}
+}
+
+\begin{center}
+Table from Cardine's Gregorian Semiology, pp.\ 12-13 with nabc strings and gregall glyphs.
+\end{center}
+
+\vfill
+\pagebreak
+
+\begin{center}
+Table with nabc strings and corresponding gregall and gresgmodern glyphs:
+\end{center}
+
+\begin{luacode*}
+ local i
+ local last
+ local key
+ local str
+ local keym
+ local arr = {}
+ for key in pairs(gregoriotex.nabc_font_tables['gregall']) do
+ table.insert(arr, key)
+ end
+ for key in pairs(gregoriotex.nabc_font_tables['gresgmodern']) do
+ table.insert(arr, key)
+ end
+ table.sort(arr)
+ tex.sprint("\\begin{multicols}{3}\\noindent");
+ for i, key in ipairs(arr) do
+ if last ~= key then
+ last = key
+ keym = key:gsub("~","\\~{}")
+ str = keym .. "\\hfill"
+ if gregoriotex.nabc_font_tables['gregall'][key] then
+ str = str .. "{\\font\\grefontnabc={name:gregall} at 8pt\\grefontnabc\\begin{gre@style@nabc}" .. gregoriotex.nabc_font_tables['gregall'][key] .. "\\end{gre@style@nabc}}"
+ else
+ str = str .. "{\\color{blue}missing}"
+ end
+ str = str .. "\\hfill"
+ if gregoriotex.nabc_font_tables['gresgmodern'][key] then
+ str = str .. "{\\font\\grefontnabc={name:gresgmodern} at 8pt\\grefontnabc\\begin{gre@style@nabc}" .. gregoriotex.nabc_font_tables['gresgmodern'][key] .. "\\end{gre@style@nabc}}"
+ else
+ str = str .. "{\\color{blue}missing}"
+ end
+ tex.sprint(str .. "\\\\")
+ end
+ end
+ tex.sprint("\\end{multicols}")
+\end{luacode*}
+
+\vfill
+\pagebreak
+
+\begin{center}
+\huge{manuscript sources of the gregall font}
+\end{center}
+
+\textit{The list of glyphs uses following abbreviations for manuscript
+references; the page number is always for the start of some antiphon,
+responsory, mass propers, even when the actual neume is on a later page.
+At the end of lines, \texttt{GT} stands for Graduale Triplex, Solesmes,
+1979, \texttt{OT} for Offertoriale Triplex, Solesmes, 1985, \texttt{AM}
+for Antiphonale Monasticum, Solesmes, 1934, \texttt{ARII} for Antiphonale
+Romanum II, Solesmes, 2009 and \texttt{NR} for Nocturnale Romanum, Hartker
+Verlag, 2002, followed by page number which also contains the corresponding
+propers, antiphons or responsories.}
+
+\textit{Most of the glyphs taken from the e-codices Virtual Manuscript Library
+of Switzerland, \url{http://www.e-codices.unifr.ch/en}, with permission
+from Stiftsbibliothek, St.\ Gallen \url{http://www.stibi.ch/} and
+Stiftsbibliothek, Einsiedeln\\
+\url{http://kloster-einsiedeln.ch/}, the picture fragments from there are
+only present in the font source file to help drawing the glyphs.}
+
+{\footnotesize
+
+\begin{multicols}{2}
+
+\noindent\textbf{Cantatorium codex 359}
+
+\noindent
+\texttt{C1} = \url{http://www.e-codices.unifr.ch/en/download/csg-0359_001/max}\\
+\texttt{C25U} Universi \texttt{GT16}\\
+\texttt{C26A} Alleluia Ostende \texttt{GT16}\\
+\texttt{C26D} Dilexisti iustitiam \texttt{GT499}\\
+\texttt{C27E} Ex Sion \texttt{GT18}\\
+\texttt{C27Q} Qui sedes \texttt{GT22}\\
+\texttt{C28A} Alleluia. Excita Domine \texttt{GT23}\\
+\texttt{C28T} Tollite portas \texttt{GT25}\\
+\texttt{C32B} Benedictus es in firmamento \texttt{GT664}\\
+\texttt{C35Q} Qui regis Israel intende\\
+\texttt{C37A} Alleluia. Veni, Domine \texttt{GT36}\\
+\texttt{C38T} Tecum principium \texttt{GT42}\\
+\texttt{C38A} Alleluia Dominus dixit \texttt{GT43}\\
+\texttt{C39B} Benedictus qui \texttt{GT45}\\
+\texttt{C40A} Alleluia Dies sanctificatus \texttt{GT49}\\
+\texttt{C40V} Viderunt omnes \texttt{GT48}\\
+\texttt{C42A} Alleluia. Hic est discipulus \texttt{GT636}\\
+\texttt{C43A} Anima nostra \texttt{GT453}\\
+\texttt{C43L} Laus tibi Christe\\
+\texttt{C44E} Ecce sacerdos \texttt{GT486}\\
+\texttt{C44D} Diffusa est gratia \texttt{GT408}\\
+\texttt{C45S} Speciosus forma \texttt{GT54}\\
+\texttt{C46O} Omnes de Saba \texttt{GT57}\\
+\texttt{C46B} Benedictus Dominus \texttt{GT257}\\
+\texttt{C46A} Alleluia Vidimus stellam \texttt{GT58}\\
+\texttt{C47I} Iuravit Dominus \texttt{GT486}\\
+\texttt{C49I} Inveni David \texttt{GT445}\\
+\texttt{C50G} Gloriosus Deus \texttt{GT456}\\
+\texttt{C52T} Timebunt gentes \texttt{GT265}\\
+\texttt{C52P} Posuisti Domine \texttt{GT477}\\
+\texttt{C53S} Suscepimus Deus \texttt{GT360}\\
+\texttt{C53A} Alleluia. Adorabo ad templum \texttt{GT270}\\
+\texttt{C54A} Audi filia \texttt{GT417}\\
+\texttt{C56B} Beatus vir \texttt{GT475}\\
+\texttt{C56D} Desiderium animae \texttt{GT432}\\
+\texttt{C58A} Adiutor \texttt{GT69}\\
+\texttt{C59D} De profundis \texttt{GT673}\\
+\texttt{C60S} Sciant gentes \texttt{GT88}\\
+\texttt{C60C} Commovisti Domine \texttt{GT89}\\
+\texttt{C61T} Tu es Deus \texttt{GT275}\\
+\texttt{C61I} Iubilate Domino \texttt{GT185}\\
+\texttt{C62M} Miserere mei \texttt{GT63}\\
+\texttt{C64Q} Qui habitat \texttt{GT73}\\
+\texttt{C67D} Dirigatur \texttt{GT340}\\
+\texttt{C71L} Laudate Dominum \texttt{GT187}\\
+\texttt{C73P} Propitius esto \texttt{GT288}\\
+\texttt{C74B} Bonum est \texttt{GT327}\\
+\texttt{C78O} Oculi omnium \texttt{GT343}\\
+\texttt{C79L} Leatatus sum \texttt{GT336}\\
+\texttt{C80Q} Qui confidunt \texttt{GT109}\\
+\texttt{C81E} Exsurge Domine \texttt{GT114}\\
+\texttt{C82B} Beata gens \texttt{GT333}\\
+\texttt{C82R} Respice Domine \texttt{GT320}\\
+\texttt{C82V} Venite filii \texttt{GT298}\\
+\texttt{C84T} Tibi Domine \texttt{GT118}\\
+\texttt{C87E} Exaltabo te \texttt{GT112}\\
+\texttt{C88T} Tollite hostias \texttt{GT272}\\
+\texttt{C89T} Tenuisti manum \texttt{GT133}\\
+\texttt{C95D} Domine exaudi \texttt{GT172}\\
+\texttt{C97D} Domine audivi\\
+\texttt{C100C} Crux fidelis \texttt{GT182}\\
+\texttt{C103C} Cantemus Domino \texttt{GT186}\\
+\texttt{C104V} Vinea facta \texttt{GT188}\\
+\texttt{C107A} Alleluia Pascha nostrum \texttt{GT197}\\
+\texttt{C118C} Clamaverunt iusti \texttt{GT454}\\
+\texttt{C122I} In omnem terram \texttt{GT427}\\
+\texttt{C123C} Constitues eos \texttt{GT426}\\
+\texttt{C134B} Benedicite Dominum \texttt{GT608}\\
+\texttt{C137A} Audi filia \texttt{GT406}\\
+\texttt{C139A} Alleluia Benedictus es \texttt{GT375}\\
+\texttt{C139B} Benedictus es \texttt{GT372}\\
+\texttt{C145L} Liberasti nos \texttt{GT366}\\
+\texttt{C148A} Alleluia Domine refugium \texttt{GT321}\\
+\texttt{C148Q} Alleluia Quoniam Deus \texttt{GT327}\\
+\texttt{C148V} Alleluia Venite \texttt{GT324}\\
+\texttt{C149A} Alleluia. Paratum cor meum \texttt{GT344}\\
+\texttt{C150L} Alleluia Laetatus \texttt{GT19}\\
+\texttt{C153S} Alleluia Sancti tui, Domine, benedicent \texttt{GT463}\\
+\texttt{C154A} Alleluia Gaudete iusti \texttt{GT430}
+
+\noindent\textbf{Einsiedeln codex 121}
+
+\noindent
+\texttt{E1} = \url{http://www.e-codices.unifr.ch/en/download/sbe-0121_001/max}\\
+\texttt{E2R} Respice in me \texttt{OT5}\\
+\texttt{E2D} Dominus dabit \texttt{GT17}\\
+\texttt{E3D} Deus tu convertens \texttt{GT20}\\
+\texttt{E10P} Prope est Dominus \texttt{GT35}\\
+\texttt{E11C} Confortamini \texttt{OT9}\\
+\texttt{E13P} Prope es tu \texttt{GT24}\\
+\texttt{E16B} Benedictus es\\
+\texttt{E20E} Exsulta satis \texttt{GT28}\\
+\texttt{E23T} Tollite portas \texttt{OT14}\\
+\texttt{E26L} Lux fulgebit \texttt{GT44}\\
+\texttt{E29E} Exsulta filia sion \texttt{GT47}\\
+\texttt{E31T} Tui sunt caeli \texttt{OT18}\\
+\texttt{E33V} Viderunt omnes \texttt{GT50}\\
+\texttt{E34I} In virtute tua \texttt{OT152}\\
+\texttt{E35E} Elegerunt apostoli \texttt{OT161}\\
+\texttt{E39E} Exiit sermo inter \texttt{GT636}\\
+\texttt{E42A} Anima nostra \texttt{GT466}\\
+\texttt{E51R} Reges tharsis \texttt{OT21}\\
+\texttt{E69P} Posuisti Domine \texttt{GT477}\\
+\texttt{E82D} De profundis \texttt{GT673}\\
+\texttt{E92I} Immutemur \texttt{GT65}\\
+\texttt{E104S} Sicut oculi \texttt{GT77}\\
+\texttt{E125P} Precatus est Moyses \texttt{GT317}\\
+\texttt{E130I} Illumina oculos \texttt{GT290}\\
+\texttt{E131O} Oculi mei semper \texttt{GT96}\\
+\texttt{E133I} Iustitiae Domini \texttt{GT309}\\
+\texttt{E147L} Laetare Ierusalem \texttt{GT108}\\
+\texttt{E148L} Laudate Dominum \texttt{GT110}\\
+\texttt{E155B} Benedicite gentes Domino \texttt{GT231}\\
+\texttt{E158D} Domine ad adiuvandum \texttt{OT42}\\
+\texttt{E161S} Sitientes venite \texttt{GT114}\\
+\texttt{E162F} Factus est Dominus \texttt{GT119}\\
+\texttt{E166C} Confitebor tibi Domine \texttt{OT44}\\
+\texttt{E173E} Eripe me \texttt{GT129}\\
+\texttt{E193D} Domine, exaudi orationem \texttt{OT53}\\
+\texttt{E195D} Dominus Iesus \texttt{GT165}\\
+\texttt{E205R} Resurrexi \texttt{GT196}\\
+\texttt{E248V} Viri Galilaei \texttt{GT235}\\
+\texttt{E255S} Spiritus Domini \texttt{GT252}\\
+\texttt{E256C} Confirma hoc \texttt{OT79}\\
+\texttt{E262S} Sapientiam sanctorum \texttt{GT452}\\
+\texttt{E272M} Mihi autem nimis \texttt{OT128}\\
+\texttt{E293V} Vindica Domine\\
+\texttt{E320I} Inclina aurem \texttt{GT300}\\
+\texttt{E327O} Oravi Deum meum \texttt{OT107}\\
+\texttt{E324R} Respice, Domine \texttt{GT320}\\
+\texttt{E336I} In voluntate tua \texttt{GT346}\\
+\texttt{E339S} Si iniquitates \texttt{GT350}\\
+\texttt{E373B} Benedictus es \texttt{GT372}
+
+\noindent\textbf{Hartker codex 390/391}
+
+\noindent
+\texttt{H1} = \url{http://www.e-codices.unifr.ch/en/download/csg-0390_001/max}\\
+\texttt{H195} = \url{http://www.e-codices.unifr.ch/en/download/csg-0391_001/max}\\
+\texttt{H16A} Aspiciebam in visu \texttt{NR111}\\
+\texttt{H16M} Missus est Gabriel \texttt{NR111}\\
+\texttt{H16V} Ave Maria \texttt{NR113}\\
+\texttt{H23E} Egredietur Dominus de Samaria \texttt{NR129}\\
+\texttt{H25E} Ecce mitto Angelum \texttt{AM201}\\
+\texttt{H26G} Grata facta est \texttt{NR25*}\\
+\texttt{H28Q} Qui venturus est \texttt{NR134}\\
+\texttt{H29E} Ecce radix Jesse \texttt{NR137}\\
+\texttt{H32N} Nascetur nobis \texttt{NR149}\\
+\texttt{H33I} Iuravi dicit Dominus \texttt{NR151}\\
+\texttt{H35G} Germinaverunt campi \texttt{NR144}\\
+\texttt{H36A} Adnuntiatum est\\
+\texttt{H48B} Beata et venerabilis\\
+\texttt{H50Q} Quem vidistis pastores \texttt{AM240}\\
+\texttt{H72V} Venit lumen tuum \texttt{AM290}\\
+\texttt{H72H} Hodie in Iordane \texttt{NR229}\\
+\texttt{H73O} Omnes de Saba \texttt{NR237}\\
+\texttt{H73S} Stella ista \texttt{NR242}\\
+\texttt{H74I} Illuminare, illuminare \texttt{NR236}\\
+\texttt{H75I} In columbae specie \texttt{NR231}\\
+\texttt{H75V} Videntes stellam \texttt{NR242}\\
+\texttt{H77S} Stella ista \texttt{AM291}\\
+\texttt{H77A} Ab Oriente \texttt{AM297}\\
+\texttt{H87E} Exaudi Deus\\
+\texttt{H103S} Spes nostra salus \texttt{NR512}\\
+\texttt{H103M} Magnus Dominus \texttt{NR516}\\
+\texttt{H104T} Te Deum patrem\\
+\texttt{H112S} Stans a dextris \texttt{AM798}\\
+\texttt{H118G} Gaude, Maria Virgo \texttt{NR130*}\\
+\texttt{H119C} Cum inducerent\\
+\texttt{H179L} Liberavit Dominus \texttt{ARII183}\\
+\texttt{H179A} Amicus meus osculi \texttt{NR381}\\
+\texttt{H179I} Iudas mercator \texttt{NR382}\\
+\texttt{H266D} Domino si in tempore\\
+\texttt{H269S} Spiritus Sanctus\\
+\texttt{H269D} Dum complerentur \texttt{NR493}\\
+\texttt{H269R} Repleti sunt omnes \texttt{NR494}\\
+\texttt{H270S} Spiritus Domini \texttt{AM520}\\
+\texttt{H271L} Loquebantur variis \texttt{AM521}\\
+\texttt{H367V} Viri sancti \texttt{NR[54]}\\
+\texttt{H424M} Magnificat\\
+\texttt{H428A} Ascendens Iesus \texttt{AM593}
+
+\noindent\textbf{St.\ Gall codex 339}
+
+\noindent
+\texttt{G1} = \url{http://www.e-codices.unifr.ch/en/download/csg-0339_033/max}\\
+\texttt{G56} = \url{http://www.e-codices.unifr.ch/en/download/csg-0339_088/max}\\
+\texttt{G57} = \url{http://www.e-codices.unifr.ch/en/download/csg-0339_088a/max}\\
+\texttt{G58} = \url{http://www.e-codices.unifr.ch/en/download/csg-0339_089/max}\\
+\texttt{G8E} Exulta satis \texttt{OT11}\\
+\texttt{G9A} Alleluia Veni Domine \texttt{GT36}\\
+\texttt{G11P} Puer natus est \texttt{GT47}\\
+\texttt{G11V} Viderunt omnes \texttt{GT48}\\
+\texttt{G12T} Tui sunt caeli \texttt{OT18}\\
+\texttt{G20I} Iubilate Deo universa terra \texttt{GT227}\\
+\texttt{G22D} Domine quinque talenta \texttt{GT515}\\
+\texttt{G25P} Posuisti Domine \texttt{GT477}\\
+\texttt{G30E} Exsurge quare obdormis \texttt{GT91}\\
+\texttt{G35D} Domine vivifica me \texttt{OT31}\\
+\texttt{G42D} Domine Deus salutis \texttt{OT112}\\
+\texttt{G44P} Precatus est Moyses \texttt{GT317}\\
+\texttt{G45D} Domine in auxilium \texttt{OT106}\\
+\texttt{G51I} Intende voci \texttt{GT280}\\
+\texttt{G51S} Si ambulabem \texttt{GT125}\\
+\texttt{G57F} Factus est Dominus \texttt{GT119}\\
+\texttt{G89D} Domine Deus in simplicitate \texttt{OT159}\\
+\texttt{G113A} Alleluia. Dilexit Andream \texttt{GT625}\\
+\texttt{G116C} Cantabo Domino \texttt{GT283}\\
+\texttt{G126D} Alleluia. Domine Deus meus \texttt{GT282}\\
+\texttt{G128A} Alleluia. Attendite popule\\
+\texttt{G132A} Alleluia. Mirabilis Dominus \texttt{GT462}\\
+\texttt{G132V} Alleluia. Vox exultationis\\
+\texttt{G139A} Asperges me Domine\\
+\texttt{G140O} Oremus dilectissimi nobis\\
+\texttt{G141O} Omnipotens Deus
+
+\noindent\textbf{St.\ Gall codex 376}
+
+\noindent
+\texttt{N1} = \url{http://www.e-codices.unifr.ch/en/download/csg-0376_001/max}\\
+\texttt{N39H} Hodie cantandus est nobis\\
+\texttt{N53A} Audite fratres dilecti\\
+\texttt{N59N} Nativitatem venerandam\\
+\texttt{N65G} Gloriatis laus tua Deus\\
+\texttt{N67G} Gloria in excelsis Deo\\
+\texttt{N68G} Gloria in excelsis Deo\\
+\texttt{N69G} Gloria in excelsis Deo\\
+\texttt{N73G} Kyrie eleison\\
+\texttt{N86D} Dilexisti iustitiam \texttt{GT498}\\
+\texttt{N100T} Tui sunt caeli \texttt{OT18}\\
+\texttt{N171D} Deus exaudi orationem \texttt{GT107}\\
+\texttt{N221N} Alleluia. Non vos relinquam \texttt{GT242}\\
+\texttt{N270A} Alleluia. Benedictus es \texttt{GT375}\\
+\texttt{N293A} Alleluia. Sancti tui, Domine, benedicent \texttt{GT463}\\
+\texttt{N296V} Alleluia. Veni Sancte Spiritus \texttt{GT263}\\
+\texttt{N363C} Carmen suo dilecto\\
+\texttt{N368L} Letamente canamus Domino nostro\\
+\texttt{N372O} O quam mira sunt Deus
+
+\noindent\textbf{St.\ Gall codex 374}
+
+\noindent
+\texttt{A1} = \url{http://www.e-codices.unifr.ch/en/download/csg-0374_001/max}\\
+\texttt{A17T} Tui sunt caeli \texttt{OT18}\\
+\texttt{A22V} Vox in Rama \texttt{GT638}\\
+\texttt{A26F} Fili quid fecisti \texttt{GT51}\\
+\texttt{A56C} Custodi me Domine \texttt{GT304}\\
+\texttt{A127E} Exultabunt sancti \texttt{OT143}\\
+\texttt{A167O} Oravi Deum meum \texttt{OT107}\\
+\texttt{A174A} Alleluia. Eripe me \texttt{GT308}
+
+\noindent
+\textbf{Bamberg, lit.\ 6, Gradual of St.\ Emmeram}
+
+\noindent
+\texttt{B9v} = \url{http://bsbsbb.bsb.lrz-muenchen.de/~db/0000/sbb00000128/images/index.html?id=00000128no=19&seite=22&signatur=Msc.Lit.6}\\
+\texttt{B9vA} Anima nostra \texttt{GT466}
+
+\end{multicols}
+}
+
+{
+\footnotesize
+\twocolumn
+\begin{supertabular}{lllll}\noindent
+& \multicolumn{3}{l}{\textbf{virga}} & \\
+\sneume{vi} & \texttt{vi} & \texttt{C78O} & tu\\
+\sneume{vilsc3} & \texttt{vilsc3} & \texttt{C82R} & testamentum\\
+\sneume{vilst1} & \texttt{vilst1} & \texttt{E29E} & rex & \fbox{2.166x}\\
+\sneume{vi-} & \texttt{vi-} & \texttt{C80Q} & montes\\
+\sneume{vi>} & \texttt{vi>} & \texttt{C27E} & eius\\
+\sneume{vi-lst3} & \texttt{vi-lst3} & \texttt{H50Q} & Quem\\
+\sneume{vi->} & \texttt{vi->} & \texttt{E20E} & sanctus & \fbox{2.166x}\\ \hline
+& \multicolumn{3}{l}{\textbf{tractulus}} & \\
+\sneume{ta} & \texttt{ta} & \texttt{C26A} & Domine\\
+\sneume{talsc3} & \texttt{talsc3} & \texttt{E262S} & saeculum & \fbox{2.166x}\\
+\sneume{talst2} & \texttt{talst2} & \texttt{C56D} & Desiderium\\
+\sneume{ta-} & \texttt{ta-} & \texttt{C81E} & antiquis.\\
+\sneume{ta>} & \texttt{ta>} & \texttt{C25U} & et\\
+\sneume{suv1} & \texttt{suv1} \textit{Cf.} \sneume{pesu2suv1} & \texttt{pesu2suv1}\\ \hline
+& \multicolumn{3}{l}{\textbf{punctum}} & \\
+\sneume{pu} & \texttt{pu} & \texttt{C137A} & Audi\\
+\textit{Cf.} \sneume{st} & \texttt{st}\\
+\textit{Cf.} \sneume{ci>} & \texttt{ci>}\\ \hline
+& \multicolumn{3}{l}{\textbf{gravis}} & \\
+\sneume{gr} & \texttt{gr} & \texttt{H271L} & Loquebantur\\
+\sneume{gr-} & \texttt{gr-} & \texttt{H270S} & Spiritus\\
+\sneume{gr-lsc6} & \texttt{gr-lsc6} & \texttt{H270S} & replevit\\ \hline
+& \multicolumn{3}{l}{\textbf{clivis}} & \\
+\sneume{cl} & \texttt{cl} & \texttt{C78O} & sperant\\
+\sneume{cllsc3} & \texttt{cllsc3} & \texttt{C26A} & nobis\\
+\sneume{cllst2} & \texttt{cllst2} & \texttt{C25U} & exspectant\\
+\sneume{cl-lst2} & \texttt{cl-lst2} & \texttt{C52P} & pretioso.\\
+\sneume{cl-} & \texttt{cl-} & \texttt{C78O} & omnium\\
+\sneume{clS-} & \texttt{clS-} & \texttt{C81E} & opem\\
+\sneume{clS} & \texttt{clS} & \texttt{C78O} & opportuno.\\
+\sneume{clS1} & \texttt{clS1} & \texttt{H424M} & potentiam\\
+\sneume{clM} & \texttt{clM} & \texttt{C148V} & nostro\\
+\textit{Cf.} \sneume{cl>} & \texttt{cl>}\\
+\sneume{cl>1} & \texttt{cl>1} & \texttt{H36A} & virginis\\
+\textit{Cf.} \sneume{vi>} & \texttt{vi>}\\
+\sneume{cl->1} & \texttt{cl->1} & \texttt{H50Q} & natum\\
+\sneume{cl->} & \texttt{cl->} & \texttt{H50Q} & angelorum\\
+\sneume{clM-} & \texttt{clM-} & \texttt{C27Q} & super\\
+\sneume{clS-1} & \texttt{clS-1} & \texttt{H428A} & navem\\ \hline
+& \multicolumn{3}{l}{\textbf{pes}} & \\
+\sneume{pe} & \texttt{pe} & \texttt{C80Q} & Domine\\
+\sneume{pe-} & \texttt{pe-} & \texttt{C80Q} & aeternum\\
+\sneume{pe-1} & \texttt{pe-1} & \texttt{C64Q} & Scapulis\\
+\sneume{peS} & \texttt{peS} & \texttt{C78O} & in\\
+\sneume{peG} & \texttt{peG} & \texttt{B9vA} & erepta & \fbox{0.5x}\\
+\textit{Cf.} \sneume{peG} & \texttt{peG}\\
+\sneume{pe>} & \texttt{pe>} & \texttt{C100C} & germine\\
+\sneume{pe>1} & \texttt{pe>1} & \texttt{C27E} & eius\\
+\sneume{pe>2} & \texttt{pe>2} & \texttt{C71L} & misericordia\\
+\sneume{pe->} & \texttt{pe->} & \texttt{N296V} & tuorum\\
+\textit{Cf.} \sneume{ta>} & \texttt{ta>}\\
+\sneume{pe->1} & \texttt{pe->1} & \texttt{H35G} & Germinaverunt & \fbox{1.7x}\\ \hline
+& \multicolumn{3}{l}{\textbf{porrectus}} & \\
+\sneume{po} & \texttt{po} & \texttt{C139B} & super\\
+\sneume{polsc2} & \texttt{polsc2} & \texttt{C82R} & iudica\\
+\sneume{po-} & \texttt{po-} & \texttt{G20I} & anime & \fbox{0.85x}\\
+\sneume{po-1} & \texttt{po-1} & \texttt{C26A} & tuum\\
+\sneume{poG} & \texttt{poG} & \texttt{C40V} & salutare\\
+\sneume{po>} & \texttt{po>} & \texttt{C80Q} & commovebitur\\
+\sneume{po~} & \texttt{po~} & \texttt{C58A} & aeternum\\
+\sneume{poG-} & \texttt{poG-} & \texttt{A167O} & meum\\
+\sneume{posu2} & \texttt{posu2} & \texttt{C46O} & gloria\\
+\sneume{po-1su2} & \texttt{po-1su2} & \texttt{H269R} & alleluia\\ \hline
+& \multicolumn{3}{l}{\textbf{torculus}} & \\
+\sneume{to} & \texttt{to} & \texttt{C78O} & Domine\\
+\sneume{tolsc3} & \texttt{tolsc3} & \texttt{C39B} & nomine\\
+\sneume{tolsc4lst3} & \texttt{tolsc4lst3} & \texttt{E125P} & Domine, & \fbox{2.166x}\\
+\sneume{tolst2} & \texttt{tolst2} & \texttt{C74B} & misericordiam\\
+\sneume{to-} & \texttt{to-} & \texttt{G44P} & animae\\
+\sneume{to-1} & \texttt{to-1} & \texttt{C139A} & nostrorum\\
+\sneume{toS} & \texttt{toS} & \texttt{C38A} & hodie\\
+\sneume{toS1} & \texttt{toS1} & \texttt{E205R} & Resurrexi, & \fbox{0.5x}\\
+\sneume{toS2} & \texttt{toS2} & \texttt{E161S} & Sitientes & \fbox{1.75x}\\
+\sneume{toS3} & \texttt{toS3} & \texttt{C104V} & circumfodit\\
+\sneume{toG} & \texttt{toG} & \texttt{G12T} & eius\\
+\sneume{toM} & \texttt{toM} & \texttt{C49I} & servum\\
+\sneume{toM1} & \texttt{toM1} & \texttt{C39B} & mirabile\\
+\sneume{to>} & \texttt{to>} & \texttt{C26A} & misericordiam\\
+\textit{Cf.} \sneume{pe>} & \texttt{pe>}\\
+\sneume{toS3lst2} & \texttt{toS3lst2} & \texttt{C59D} & tuae\\
+\sneume{pq!cl-} & \texttt{pq!cl-} & \texttt{C87E} & sanasti\\
+\sneume{to>1} & \texttt{to>1} & \texttt{E130I} & obdormiam & \fbox{2.166x}\\
+\sneume{to->} & \texttt{to->} & \texttt{E158D} & respexit & \fbox{2.166x}\\
+\sneume{toS2sux1} & \texttt{toS2sux1} & \texttt{C46O} & Surge\\ \hline
+& \multicolumn{3}{l}{\textbf{climacus}} & \\
+\sneume{ci} & \texttt{ci} & \texttt{C26A} & tuum\\
+\sneume{ci1} & \texttt{ci1} & \texttt{G73P} & gentes\\
+\sneume{cilsc3} & \texttt{cilsc3} & \texttt{C74B} & tuo\\
+\sneume{ci-} & \texttt{ci-} & \texttt{C81E} & nos\\
+\sneume{ciS} & \texttt{ciS} & \texttt{C81E} & Domine\\
+\sneume{ciS1} & \texttt{ciS1} & \texttt{C139A} & Deus\\
+\sneume{visut1su2} & \texttt{visut1su2} & \texttt{C53A} & Adorabo\\
+\sneume{ciG} & \texttt{ciG} & \texttt{C64Q} & lapidem\\
+\sneume{ciG1} & \texttt{ciG1} & \texttt{C42A} & ille\\
+\sneume{ciM} & \texttt{ciM} & \texttt{C154A} & Alleluia\\
+\sneume{ci>} & \texttt{ci>} & \texttt{C46O} & orta\\
+\sneume{cl>} & \texttt{cl>} & \texttt{C79L} & domum\\
+\sneume{visuv1su2} & \texttt{visuv1su2} & \texttt{C35Q} & nos\\
+\sneume{visut3} & \texttt{visut3} & \texttt{C38T} & meo\\
+\sneume{visu1suu1} & \texttt{visu1suu1} & \texttt{C26D} & laetitia.\\
+\sneume{visut4} & \texttt{visut4} & \texttt{C25U} & me.\\
+\sneume{cl-1su2} & \texttt{cl-1su2} & \texttt{C40A} & magna\\
+\sneume{visu1sut2} & \texttt{visu1sut2} & \texttt{C43L} & Domine\\
+\sneume{visu1suv1} & \texttt{visu1suv1} & \texttt{C53S} & terrae.\\
+\sneume{visuu1su2} & \texttt{visuu1su2} & \texttt{C56D} & eius\\
+\sneume{visuu2su2} & \texttt{visuu2su2} & \texttt{H103S} & salus\\
+\sneume{vi-suu2su2} & \texttt{vi-suu2su2} & \texttt{H103S} & o\\
+\sneume{visu2suw1} & \texttt{visu2suw1} & \texttt{G113A} & Alleluia & \fbox{0.85x}\\
+\sneume{visut2su2} & \texttt{visut2su2} & \texttt{G128A} & Alleluia & \fbox{0.85x}\\
+\sneume{visut3suw1} & \texttt{visut3suw1} & \texttt{C153S} & dicent.\\
+\sneume{visu1sut1sux1} & \texttt{visu1sut1sux1} & \texttt{G126D} & salvum & \fbox{0.85x}\\
+\sneume{visu1sut1su2} & \texttt{visu1sut1su2} & \texttt{N39H} & puer\\
+\sneume{visu1sut1su1sut1} & \texttt{visu1sut1su1sut1} & \texttt{N39H} & generavit\\
+\sneume{vi-su1sut1su2} & \texttt{vi-su1sut1su2} & \texttt{N39H} & enim\\
+\sneume{visut1sux1} & \texttt{visut1sux1} & \texttt{N59N} & filium\\
+\sneume{clSsu1sut1} & \texttt{clSsu1sut1} & \texttt{N65G} & tui\\
+\sneume{vi-su4} & \texttt{vi-su4} & \texttt{N68G} & Amen.\\
+\sneume{vi-su1sut2su1} & \texttt{vi-su1sut2su1} & \texttt{N73K} & Christe\\
+\sneume{visu1sut1suy1} & \texttt{visu1sut1suy1} & \texttt{N221N} & Alleluia.\\
+\sneume{visut3suy1} & \texttt{visut3suy1} & \texttt{N293A} & dicent.\\
+\sneume{visut2suy1} & \texttt{visut2suy1} & \texttt{N363C} & sacro & \fbox{1.25x}\\
+\sneume{visu5} & \texttt{visu5} & \texttt{N368L} & fornacibus & \fbox{1.25x}\\
+\sneume{visu1suu1su2} & \texttt{visu1suu1su2} & \texttt{N372O} & erogatione & \fbox{1.25x}\\
+\sneume{vi-su1suu2} & \texttt{vi-su1suu2} & \texttt{A174A} & meus\\
+\sneume{vi-su1suu1su1} & \texttt{vi-su1suu1su1} & \texttt{A174A} & Alleluia.\\
+\sneume{vi-sut2} & \texttt{vi-sut2} & \texttt{H74I} & illuminare\\
+\sneume{clS-su2} & \texttt{clS-su2} & \texttt{C46A} & eius\\
+\sneume{vi-suu1su2} & \texttt{vi-suu1su2} & \texttt{H75I} & sanctus\\
+\sneume{clSsut2} & \texttt{clSsut2} & \texttt{E51R} & suscipiant & \fbox{2.0x}\\
+\sneume{vi-sut3} & \texttt{vi-sut3} & \texttt{H269D} & dicentes\\
+\sneume{vi-su1sut1} & \texttt{vi-su1sut1} \textit{Cf.} \sneume{vi-su1sut1su2} & \multicolumn{3}{l}{\texttt{vi-su1sut1su2} minus subpunctis}\\
+\sneume{vi-su2sut1} & \texttt{vi-su2sut1} & \texttt{N296V} & alleluia\\
+\sneume{vi-su1sux1} & \texttt{vi-su1sux1} & \texttt{E373B} & Sanctum & \fbox{2.133x}\\
+\sneume{vi-sut4} & \texttt{vi-sut4} & \texttt{H16A} & servient & \fbox{1.7x}\\
+\sneume{vi-suu2} & \texttt{vi-suu2} & \texttt{H23E} & ecce & \fbox{1.7x}\\
+\sneume{vi-suu3} & \texttt{vi-suu3} & \texttt{H35G} & veniet & \fbox{1.7x}\\
+\sneume{visu2sux1} & \texttt{visu2sux1} & \texttt{H48B} & mater & \fbox{1.7x}\\ \hline
+& \multicolumn{3}{l}{\textbf{scandicus}} & \\
+\sneume{sc} & \texttt{sc} & \texttt{G11P} & imperium & \fbox{0.85x}\\
+\sneume{sc1} & \texttt{sc1} \textit{Cf.} \sneume{vipp4} & \multicolumn{3}{l}{\texttt{vipp4} minus first punctum}\\
+\sneume{sc-} & \texttt{sc-} & \texttt{C123C} & terram\\
+\sneume{scS} & \texttt{scS} & \texttt{C154A} & Alleluia\\
+\sneume{scG} & \texttt{scG} & \texttt{H179I} & Iudas\\
+\sneume{scG1} & \texttt{scG1} & \texttt{C52P} & Posuisti\\
+\sneume{scM1} & \texttt{scM1} & \texttt{C67D} & Domine\\
+\sneume{sc>} & \texttt{sc>} & \texttt{C26A} & Alleluia\\
+\textit{Cf.} \sneume{pe>2} & \texttt{pe>2}\\
+\sneume{vi-pp2} & \texttt{vi-pp2} & \texttt{C26A} & Domine\\
+\sneume{vi-ppt3} & \texttt{vi-ppt3} & \texttt{C27E} & veniet.\\
+\sneume{scM2} & \texttt{scM2} & \texttt{C44E} & Ecce\\
+\sneume{vi>ppt3} & \texttt{vi>ppt3} & \texttt{E2R} & non & \fbox{2.166x}\\
+\sneume{cl>ppt2} & \texttt{cl>ppt2} & \texttt{H73O} & annuntiantes\\
+\sneume{vi-!vi!vi} & \texttt{vi-!vi!vi} & \texttt{E155B} & Benedicite & \fbox{2.166x}\\
+\sneume{vippt3} & \texttt{vippt3} & \texttt{G140O} & ae & \fbox{0.85x}\\
+\sneume{vi-pp4} & \texttt{vi-pp4} & \texttt{C154A} & rectos\\
+\sneume{vi-!vi-!vi} & \texttt{vi-!vi-!vi} & \texttt{H118G} & erubescat\\
+\sneume{vipp4} & \texttt{vipp4} & \texttt{A127E} & eum\\
+\sneume{vi>ppt2} & \texttt{vi>ppt2} & \texttt{H75V} & apertis\\ \hline
+& \multicolumn{3}{l}{\textbf{porrectus flexus}} & \\
+\sneume{pf} & \texttt{pf} & \texttt{C27E} & sacrificia\\
+\sneume{pflsc2} & \texttt{pflsc2} & \texttt{C58D} & intendentes\\
+\sneume{pf1lsc2} & \texttt{pf1lsc2} & \texttt{C61I} & Ipse\\
+\sneume{pflst2} & \texttt{pflst2} & \texttt{C122I} & fines\\
+\sneume{pf-} & \texttt{pf-} & \texttt{C81E} & antiquis.\\
+\sneume{pfS} & \texttt{pfS} & \texttt{G116C} & tribuit & \fbox{0.85x}\\
+\sneume{sfM} & \texttt{sfM} & \texttt{E248V} & alleluia, & \fbox{2.166x}\\
+\sneume{pfM} & \texttt{pfM} & \texttt{E39E} & manere & \fbox{2.166x}\\
+\sneume{pf>} & \texttt{pf>} & \texttt{C95D} & manducare\\
+\textit{Cf.} \sneume{po>} & \texttt{po>}\\
+\sneume{pfMsut1} & \texttt{pfMsut1} & \texttt{E34I} & eum & \fbox{2.166x}\\ \hline
+& \multicolumn{3}{l}{\textbf{pes subbipunctis}} & \\
+\sneume{pesu2} & \texttt{pesu2} & \texttt{C81E} & antiquis.\\
+\sneume{vippt1su2lsc3} & \texttt{vippt1su2lsc3} & \texttt{C61T} & solus:\\
+\sneume{pe-su2} & \texttt{pe-su2} & \texttt{H73S} & adoraverunt\\
+\sneume{pe-1su2} & \texttt{pe-1su2} & \texttt{C64Q} & habitat\\
+\sneume{pe-1sut2} & \texttt{pe-1sut2} & \texttt{H104T} & confitemur\\
+\sneume{peSsu2} & \texttt{peSsu2} & \texttt{A17T} & eius\\
+\sneume{peSsut2} & \texttt{peSsut2} & \texttt{C27E} & sanctos\\
+\sneume{vippt1su2} & \texttt{vippt1su2} & \texttt{C56B} & benedicetur.\\
+\sneume{toS2sut1} & \texttt{toS2sut1} & \texttt{C139A} & Alleluia\\
+\sneume{vi-!ci} & \texttt{vi-!ci} & \texttt{E272M} & cognovisti & \fbox{2.166x}\\
+\sneume{pesu1suw1} & \texttt{pesu1suw1} & \texttt{G8E} & plebem\\
+\sneume{pe-su1sut1} & \texttt{pe-su1sut1} & \texttt{N296V} & alleluia\\
+\sneume{pe-su2suy1} & \texttt{pe-su2suy1} & \texttt{N296V} & alleluia\\
+\sneume{pe-1sut3} & \texttt{pe-1sut3} & \texttt{H179A} & malum\\
+\textit{Cf.} \sneume{to>} & \texttt{to>}\\
+\sneume{pesu1suu1} & \texttt{pesu1suu1} & \texttt{C27E} & Deus\\
+\sneume{pesu3} & \texttt{pesu3} & \texttt{C27Q} & regis\\
+\sneume{vippt1su1sut1} & \texttt{vippt1su1sut1} & \texttt{C40V} & omnes\\
+\sneume{vippu1su2} & \texttt{vippu1su2} & \texttt{C74B} & Altissime.\\
+\sneume{pesu1sut3} & \texttt{pesu1sut3} & \texttt{C60S} & venti.\\
+\sneume{pesu2suv1} & \texttt{pesu2suv1} & \texttt{C60C} & Sana\\
+\sneume{vippu1su2lsc3} & \texttt{vippu1su2lsc3} & \texttt{C32B} & caeli\\
+\sneume{pe-1su1suu1} & \texttt{pe-1su1suu1} & \texttt{C61I} & pascuae\\
+\sneume{peSsu1sux1} & \texttt{peSsu1sux1} & \texttt{G89D} & filii & \fbox{0.85x}\\
+\sneume{pe-su3sut1} & \texttt{pe-su3sut1} & \texttt{N270A} & saecula.\\
+\sneume{pe-1sut1sux1} & \texttt{pe-1sut1sux1} & \texttt{H72V} & orta\\
+\sneume{peSsut3} & \texttt{peSsut3} & \texttt{C46O} & Jerusalem\\
+\sneume{pesut2} & \texttt{pesut2} & \texttt{H77S} & magi\\
+\sneume{pe-1suw2} & \texttt{pe-1suw2} & \texttt{E255S} & Domini & \fbox{2.133x}\\
+\sneume{peSsut1su2} & \texttt{peSsut1su2} & \texttt{E13P} & Domine & \fbox{2.133x}\\
+\sneume{pesu1sux1} & \texttt{pesu1sux1} & \texttt{H25E} & angelum & \fbox{1.7x}\\
+\sneume{pe-1su1suw1} & \texttt{pe-1su1suw1} & \texttt{H29E} & deprecabuntur & \fbox{1.7x}\\
+\sneume{pesu1sut1} & \texttt{pesu1sut1} \textit{Cf.} \sneume{pesu1sut3} & \multicolumn{3}{l}{\texttt{pesu1sut3} minus 2 tractulis}\\ \hline
+& \multicolumn{3}{l}{\textbf{scandicus flexus}} & \\
+\sneume{sf} & \texttt{sf} & \texttt{C64Q} & habitat\\
+\sneume{sflsc3} & \texttt{sflsc3} & \texttt{C27E} & Deus\\
+\sneume{sf-} & \texttt{sf-} & \texttt{C39B} & est\\
+\sneume{sfS} & \texttt{sfS} & \texttt{C97D} & Deus\\
+\sneume{toppu1} & \texttt{toppu1} & \texttt{C103C} & Cantemus\\
+\textit{Cf.} \sneume{sfM} & \texttt{sfM}\\
+\textit{Cf.} \sneume{sc>} & \texttt{sc>}\\
+\sneume{to>pp2} & \texttt{to>pp2} & \texttt{E324R} & testamentum & \fbox{2.0x}\\ \hline
+& \multicolumn{3}{l}{\textbf{torculus resupinus}} & \\
+\sneume{tr} & \texttt{tr} & \texttt{C25U} & edoce\\
+\sneume{trlst2} & \texttt{trlst2} & \texttt{E69P} & eius & \fbox{2.0x}\\
+\sneume{tr-1} & \texttt{tr-1} & \texttt{C38T} & meo\\
+\sneume{trS} & \texttt{trS} & \texttt{C58A} & Domine\\
+\sneume{trG} & \texttt{trG} & \texttt{E336I} & fecisti & \fbox{2.166x}\\
+\sneume{trG1} & \texttt{trG1} & \texttt{G25P} & ei\\
+\sneume{trG2} & \texttt{trG2} & \texttt{E147L} & Laetare & \fbox{2.166x}\\
+\sneume{trM} & \texttt{trM} & \texttt{E336I} & resistere & \fbox{2.166x}\\
+\sneume{tr>} & \texttt{tr>} & \texttt{C82V} & nonconfundentur\\
+\sneume{tr~} & \texttt{tr~} & \texttt{C60S} & Altissimus\\
+\sneume{tr-~} & \texttt{tr-~} & \texttt{C27Q} & et\\
+\sneume{tr-~1} & \texttt{tr-~1} & \texttt{C107A} & Alleluia.\\
+\sneume{trS-} & \texttt{trS-} & \texttt{C89T} & pedes,\\
+\sneume{trS1} & \texttt{trS1} & \texttt{E26L} & eeiieiue & \fbox{2.166x}\\ \hline
+& \multicolumn{3}{l}{\textbf{stropha}} & \\
+\sneume{st} & \texttt{st} & \texttt{C80Q} & commovebitur\\
+\sneume{st-} & \texttt{st-} & \texttt{C52P} & Desiderium\\
+\sneume{stS} & \texttt{stS} & \texttt{E263V} & est. & \fbox{2.166x}\\
+\sneume{st>} & \texttt{st>} & \texttt{C49I} & servum\\ \hline
+& \multicolumn{3}{l}{\textbf{distropha}} & \\
+\sneume{ds} & \texttt{ds} & \texttt{C46O} & super\\
+\sneume{dslsx6} & \texttt{dslsx6} & \texttt{C45S} & forma\\
+\sneume{ds-} & \texttt{ds-} & \texttt{C81E} & Domine\\
+\sneume{ds>} & \texttt{ds>} & \texttt{C38A} & Alleluia\\ \hline
+& \multicolumn{3}{l}{\textbf{tristropha}} & \\
+\sneume{ts} & \texttt{ts} & \texttt{C80Q} & Dominus\\
+\sneume{tslsx6} & \texttt{tslsx6} & \texttt{C44D} & mansuetudinem\\
+\sneume{ts-} & \texttt{ts-} & \texttt{C150L} & ibimus\\
+\sneume{tsM} & \texttt{tsM} & \texttt{C62M} & anima\\
+\sneume{ts>} & \texttt{ts>} & \texttt{C62M} & conculcantes\\
+\sneume{tsM-} & \texttt{tsM-} & \texttt{A26F} & ego\\ \hline
+& \multicolumn{3}{l}{\textbf{trigonus}} & \\
+\sneume{tg} & \texttt{tg} & \texttt{C80Q} & aeternum\\
+\sneume{tg1} & \texttt{tg1} & \texttt{C81E} & antiquis.\\
+\sneume{tgS} & \texttt{tgS} & \texttt{C139B} & omnibus\\
+\sneume{tgS1} & \texttt{tgS1} & \texttt{N171D} & mei\\
+\sneume{tgS3} & \texttt{tgS3} & \texttt{C61I} & laetitia.\\
+\sneume{tgM} & \texttt{tgM} & \texttt{C118C} & Dominus\\
+\sneume{tgS-} & \texttt{tgS-} & \texttt{C118C} & Dominus\\
+\sneume{tgS4} & \texttt{tgS4} & \texttt{C86D} & mei\\ \hline
+& \multicolumn{3}{l}{\textbf{bivirga}} & \\
+\sneume{bv} & \texttt{bv} & \texttt{C26D} & Propterea\\
+\sneume{bv-} & \texttt{bv-} & \texttt{C82B} & populus\\
+\sneume{bv>} & \texttt{bv>} & \texttt{H33I} & montes\\ \hline
+& \multicolumn{3}{l}{\textbf{trivirga}} & \\
+\sneume{tv} & \texttt{tv} & \texttt{C56D} & pretioso\\
+\sneume{tv-} & \texttt{tv-} & \texttt{C61I} & eius.\\ \hline
+& \multicolumn{3}{l}{\textbf{pressus}} & \\
+\sneume{pr} & \texttt{pr} & \texttt{C26A} & Alleluia\\
+\sneume{pi} & \texttt{pi} & \texttt{C82R} & Domine,\\
+\sneume{prlsc2} & \texttt{prlsc2} & \texttt{E339S} & Si & \fbox{2.166x}\\
+\sneume{pr-lsc3} & \texttt{pr-lsc3} & \texttt{C122I} & Dei\\
+\sneume{prlst2} & \texttt{prlst2} & \texttt{C145L} & tuo\\
+\sneume{pilsc2} & \texttt{pilsc2} & \texttt{C122I} & Dei\\
+\sneume{pilst2} & \texttt{pilst2} & \texttt{C26A} & Alleluia\\
+\sneume{pr-} & \texttt{pr-} & \texttt{C59D} & Si\\
+\sneume{prM} & \texttt{prM} & \texttt{E173E} & insurgentibus & \fbox{2.166x}\\
+\sneume{pr>} & \texttt{pr>} & \texttt{H72H} & in\\
+\sneume{pi>} & \texttt{pi>} & \texttt{H103M} & Magnus\\
+\textit{Cf.} \sneume{vs>} & \texttt{vs>}\\
+\textit{Cf.} \sneume{or>} & \texttt{or>}\\ \hline
+& \multicolumn{3}{l}{\textbf{virga strata}} & \\
+\sneume{vs} & \texttt{vs} & \texttt{C148A} & generatio\\
+\sneume{vslsc3} & \texttt{vslsc3} & \texttt{C39B} & nomine\\
+\sneume{vslst2} & \texttt{vslst2} & \texttt{E195D} & suis, & \fbox{2.166x}\\
+\sneume{vs-} & \texttt{vs-} & \texttt{C82B} & Domini\\
+\sneume{vs>} & \texttt{vs>} & \texttt{C64Q} & pennis\\
+\textit{Cf.} \sneume{ta>} & \texttt{ta>}\\
+\sneume{vs->} & \texttt{vs->} & \texttt{A22V} & Rama\\ \hline
+& \multicolumn{3}{l}{\textbf{oriscus}} & \\
+\sneume{or} & \texttt{or} & \texttt{H112S} & candidior\\
+\sneume{or>} & \texttt{or>} & \texttt{C148V} & salutari\\ \hline
+& \multicolumn{3}{l}{\textbf{salicus}} & \\
+\sneume{sa} & \texttt{sa} & \texttt{C27E} & super\\
+\sneume{sa1} & \texttt{sa1} & \texttt{C148A} & Alleluia.\\
+\sneume{salsfr1} & \texttt{salsfr1} & \texttt{E3D} & Deus & \fbox{2.166x}\\
+\sneume{sa-} & \texttt{sa-} & \texttt{C25U} & tuas\\
+\sneume{sa-1} & \texttt{sa-1} & \texttt{G30E} & tribulationis\\
+\sneume{saG} & \texttt{saG} & \texttt{C107A} & Alleluia.\\
+\sneume{saM} & \texttt{saM} & \texttt{H16V} & venient & \fbox{1.7x}\\
+\sneume{saM1} & \texttt{saM1} & \texttt{E10P} & omnis & \fbox{2.166x}\\
+\sneume{saM2} & \texttt{saM2} & \texttt{C27Q} & regis\\
+\sneume{sa>} & \texttt{sa>} & \texttt{C27E} & sanctos\\
+\sneume{sa->1} & \texttt{sa->1} & \texttt{H77A} & magi\\
+\textit{Cf.} \sneume{pe>2} & \texttt{pe>2}\\
+\sneume{sa!clS1} & \texttt{sa!clS1} & \texttt{C80Q} & sicut\\
+\sneume{sa!clS-1} & \texttt{sa!clS-1} & \texttt{C27Q} & tuam\\
+\sneume{sa!clS1lsc2} & \texttt{sa!clS1lsc2} & \texttt{C46B} & Deus\\
+\sneume{sa-lsfr1} & \texttt{sa-lsfr1} & \texttt{C134B} & nomen\\
+\sneume{sa1!cl>} & \texttt{sa1!cl>} & \texttt{G45D} & respexit & \fbox{0.85x}\\
+\sneume{sa!cl>} & \texttt{sa!cl>} & \texttt{G22D} & euge & \fbox{0.85x}\\
+\sneume{sa!cl} & \texttt{sa!cl} & \texttt{G141O} & fortitudo & \fbox{0.85x}\\
+\sneume{saM-1} & \texttt{saM-1} & \texttt{G139A} & Domine & \fbox{0.85x}\\
+\sneume{sa!cl-} & \texttt{sa!cl-} & \texttt{G132V} & Alleluia. & \fbox{0.85x}\\
+\sneume{saM3} & \texttt{saM3} & \texttt{N53A} & fratres\\
+\sneume{saM-4} & \texttt{saM-4} & \texttt{N296V} & amoris\\
+\sneume{sa>2} & \texttt{sa>2} & \texttt{H73S} & viderunt\\
+\sneume{sa1!cl->} & \texttt{sa1!cl->} & \texttt{H32N} & eius & \fbox{1.7x}\\ \hline
+& \multicolumn{3}{l}{\textbf{pes quassus}} & \\
+\sneume{pq} & \texttt{pq} & \texttt{C27E} & sacrificia.\\
+\sneume{pqlsfr1} & \texttt{pqlsfr1} & \texttt{C150L} & nostri\\
+\sneume{pq-} & \texttt{pq-} & \texttt{C148V} & nostro\\
+\sneume{pq>} & \texttt{pq>} & \texttt{C84T} & pupillo\\
+\sneume{pqS} & \texttt{pqS} & \texttt{C52T} & maiestate\\
+\sneume{pqS>} & \texttt{pqS>} & \texttt{H424M} & potentiam\\
+\sneume{pq!cl>} & \texttt{pq!cl>} & \texttt{G57F} & firmamentum & \fbox{0.85x}\\
+\sneume{pq!cl} & \texttt{pq!cl} & \texttt{E23T} & Domini & \fbox{2.166x}\\ \hline
+& \multicolumn{3}{l}{\textbf{quilisma}} & \\
+\sneume{ql} & \texttt{ql} & \texttt{C80Q} & commovebitur\\
+\sneume{qi} & \texttt{qi} & \texttt{C103C} & Hic\\
+\sneume{ql-} & \texttt{ql-} & \texttt{C148A} & generatio\\
+\sneume{qi-} & \texttt{qi-} & \texttt{H28Q} & veniet.\\
+\sneume{ql>} & \texttt{ql>} & \texttt{C40V} & gentium\\
+\sneume{qi>} & \texttt{qi>} & \texttt{C28A} & et\\ \hline
+& \multicolumn{3}{l}{\textbf{pes stratus}} & \\
+\sneume{pt} & \texttt{pt} & \texttt{G140O} & ae & \fbox{0.85x}\\ \hline
+\\
+& \multicolumn{3}{l}{\textbf{subpunctis}} & \\
+\sneume{su2} & \texttt{su2} \textit{Cf.} \sneume{ci} & \multicolumn{2}{l}{\texttt{ci}}\\
+\sneume{su3} & \texttt{su3} \textit{Cf.} \sneume{ci1} & \multicolumn{2}{l}{\texttt{ci1}}\\
+\sneume{su1sut1} & \texttt{su1sut1} \textit{Cf.} \sneume{ciS} & \multicolumn{2}{l}{\texttt{ciS}}\\
+\sneume{sut2} & \texttt{sut2} \textit{Cf.} \sneume{ciS1} & \multicolumn{2}{l}{\texttt{ciS1}}\\
+\sneume{suu1su2} & \texttt{suu1su2} \textit{Cf.} \sneume{visuu1su2} & \multicolumn{2}{l}{\texttt{visuu1su2}}\\
+\sneume{su1suw1} & \texttt{su1suw1} \textit{Cf.} \sneume{ciM} & \multicolumn{2}{l}{\texttt{ciM}}\\
+\sneume{su1sux1} & \texttt{su1sux1} \textit{Cf.} \sneume{ci>} & \multicolumn{2}{l}{\texttt{ci>}}\\
+\sneume{su1sut2} & \texttt{su1sut2} \textit{Cf.} \sneume{visu1sut2} & \multicolumn{2}{l}{\texttt{visu1sut2}}\\
+\sneume{su1suu1} & \texttt{su1suu1} \textit{Cf.} \sneume{visu1suu1} & \multicolumn{2}{l}{\texttt{visu1suu1}}\\
+\sneume{su2suw1} & \texttt{su2suw1} \textit{Cf.} \sneume{visu2suw1} & \multicolumn{2}{l}{\texttt{visu2suw1}}\\
+\sneume{sut1su2} & \texttt{sut1su2} \textit{Cf.} \sneume{visut1su2} & \multicolumn{2}{l}{\texttt{visut1su2}}\\
+\sneume{sut3} & \texttt{sut3} \textit{Cf.} \sneume{visut3} & \multicolumn{2}{l}{\texttt{visut3}}\\
+\sneume{suv1su2} & \texttt{suv1su2} \textit{Cf.} \sneume{visuv1su2} & \multicolumn{2}{l}{\texttt{visuv1su2}}\\
+\sneume{sut4} & \texttt{sut4} \textit{Cf.} \sneume{visut4} & \multicolumn{2}{l}{\texttt{visut4}}\\
+\sneume{su1suv1} & \texttt{su1suv1} \textit{Cf.} \sneume{visu1suv1} & \multicolumn{2}{l}{\texttt{visu1suv1}}\\
+\sneume{suu2su2} & \texttt{suu2su2} \textit{Cf.} \sneume{vi-suu2su2} & \multicolumn{2}{l}{\texttt{vi-suu2su2}}\\
+\sneume{sut2su2} & \texttt{sut2su2} \textit{Cf.} \sneume{visut2su2} & \multicolumn{2}{l}{\texttt{visut2su2}}\\
+\sneume{su1sut3} & \texttt{su1sut3} \textit{Cf.} \sneume{pesu1sut3} & \multicolumn{2}{l}{\texttt{pesu1sut3}}\\
+\sneume{su2suv1} & \texttt{su2suv1} \textit{Cf.} \sneume{pesu2suv1} & \multicolumn{2}{l}{\texttt{pesu2suv1}}\\
+\sneume{sut3suw1} & \texttt{sut3suw1} \textit{Cf.} \sneume{visut3suw1} & \multicolumn{2}{l}{\texttt{visut3suw1}}\\
+\sneume{su1sut1sux1} & \texttt{su1sut1sux1} \textit{Cf.} \sneume{visu1sut1sux1} & \multicolumn{2}{l}{\texttt{visu1sut1sux1}}\\
+\sneume{su1sut1su2} & \texttt{su1sut1su2} \textit{Cf.} \sneume{visu1sut1su2} & \multicolumn{2}{l}{\texttt{visu1sut1su2}}\\
+\sneume{su1sut1su1sut1} & \texttt{su1sut1su1sut1} \textit{Cf.} \sneume{visu1sut1su1sut1} & \multicolumn{2}{l}{\texttt{visu1sut1su1sut1}}\\
+\sneume{sut1sux1} & \texttt{sut1sux1} \textit{Cf.} \sneume{visut1sux1} & \multicolumn{2}{l}{\texttt{visut1sux1}}\\
+\sneume{su4} & \texttt{su4} \textit{Cf.} \sneume{vi-su4} & \multicolumn{2}{l}{\texttt{vi-su4}}\\
+\sneume{su1sut2su1} & \texttt{su1sut2su1} \textit{Cf.} \sneume{vi-su1sut2su1} & \multicolumn{2}{l}{\texttt{vi-su1sut2su1}}\\
+\sneume{su1sut1suy1} & \texttt{su1sut1suy1} \textit{Cf.} \sneume{visu1sut1suy1} & \multicolumn{2}{l}{\texttt{visu1sut1suy1}}\\
+\sneume{sut3suy1} & \texttt{sut3suy1} \textit{Cf.} \sneume{visut3suy1} & \multicolumn{2}{l}{\texttt{visut3suy1}}\\
+\sneume{sut2suy1} & \texttt{sut2suy1} \textit{Cf.} \sneume{visut2suy1} & \multicolumn{2}{l}{\texttt{visut2suy1}}\\
+\sneume{su5} & \texttt{su5} \textit{Cf.} \sneume{visu5} & \multicolumn{2}{l}{\texttt{visu5}}\\
+\sneume{su1suu1su2} & \texttt{su1suu1su2} \textit{Cf.} \sneume{visu1suu1su2} & \multicolumn{2}{l}{\texttt{visu1suu1su2}}\\
+\sneume{su1suu2} & \texttt{su1suu2} \textit{Cf.} \sneume{vi-su1suu2} & \multicolumn{2}{l}{\texttt{vi-su1suu2}}\\
+\sneume{su1suu1su1} & \texttt{su1suu1su1} \textit{Cf.} \sneume{vi-su1suu1su1} & \multicolumn{2}{l}{\texttt{vi-su1suu1su1}}\\
+\sneume{su3sut1} & \texttt{su3sut1} \textit{Cf.} \sneume{pe-su3sut1} & \multicolumn{2}{l}{\texttt{pe-su3sut1}}\\
+\sneume{suu2} & \texttt{suu2} \textit{Cf.} \sneume{ql-ppt1suu2} & \multicolumn{2}{l}{\texttt{ql-ppt1suu2}}\\
+\sneume{su2sut1} & \texttt{su2sut1} \textit{Cf.} \sneume{vi-su2sut1} & \multicolumn{2}{l}{\texttt{vi-su2sut1}}\\
+\sneume{su2suy1} & \texttt{su2suy1} \textit{Cf.} \sneume{pe-su2suy1} & \multicolumn{2}{l}{\texttt{pe-su2suy1}}\\
+\sneume{suw2} & \texttt{suw2} \textit{Cf.} \sneume{pe-1suw2} & \multicolumn{2}{l}{\texttt{pe-1suw2}}\\
+\sneume{sut2suu1} & \texttt{sut2suu1} \textit{Cf.} \sneume{ql-ppt1sut2suu1} & \multicolumn{2}{l}{\texttt{ql-ppt1sut2suu1}}\\
+\sneume{suu3} & \texttt{suu3} \textit{Cf.} \sneume{vi-suu3} & \multicolumn{2}{l}{\texttt{vi-suu3}}\\ \hline
+\\
+& \multicolumn{3}{l}{\textbf{prepunctis}} & \\
+\sneume{pp2} & \texttt{pp2} \textit{Cf.} \sneume{vi-pp2} & \texttt{vi-pp2}\\
+\sneume{ppu2} & \texttt{ppu2} \textit{Cf.} \sneume{scS} & \texttt{scS}\\
+\sneume{ppt2} & \texttt{ppt2} \textit{Cf.} \sneume{sfS} & \texttt{sfS}\\
+\sneume{ppu3} & \texttt{ppu3} & \texttt{C47I} & Sede\\
+\sneume{ppu4} & \texttt{ppu4} & \texttt{C58A} & Domine\\
+\sneume{ppu5} & \texttt{ppu5} & \texttt{C50G} & confregit\\
+\sneume{pp4} & \texttt{pp4} & \texttt{C78O} & escam\\
+\sneume{pp3} & \texttt{pp3} \textit{Cf.} \sneume{pp4} & \texttt{pp4}\\
+\sneume{ppt3} & \texttt{ppt3} \textit{Cf.} \sneume{vi>ppt3} & \texttt{vi>ppt3}\\
+\sneume{ppt4} & \texttt{ppt4} & \texttt{N69G} & amin.\\
+\sneume{ppt5} & \texttt{ppt5} & \texttt{A56C} & videant\\ \hline
+\\
+& \multicolumn{3}{l}{\textbf{combined glyphs}} & \\
+\sneume{cl!pi} & \texttt{cl!pi} & \texttt{C82R} & Domine\\
+\sneume{cl!pilsc1lst3} & \texttt{cl!pilsc1lst3} & \texttt{C89T} & manum\\
+\sneume{cl!pilsc2} & \texttt{cl!pilsc2} & \texttt{C149A} & cantabo\\
+\sneume{cl!pr} & \texttt{cl!pr} & \texttt{G51S} & ipsa & \fbox{0.85x}\\
+\sneume{cl-!pi} & \texttt{cl-!pi} & \texttt{E35E} & illis & \fbox{2.166x}\\
+\sneume{ql!cl} & \texttt{ql!cl} & \texttt{C148A} & Domine\\
+\sneume{ql!cl!cl>} & \texttt{ql!cl!cl>} \textit{Cf.} \sneume{ql!cl!cl>ppt1} & \multicolumn{3}{l}{\texttt{ql!cl!cl>ppt1} minus tractulus}\\
+\sneume{ql!cl!pi} & \texttt{ql!cl!pi} \textit{Cf.} \sneume{ql!cl!pippt1} & \multicolumn{3}{l}{\texttt{ql!cl!pippt1} minus tractulus}\\
+\sneume{ql!pf-} & \texttt{ql!pf-} & \texttt{G42D} & mane & \fbox{0.85x}\\
+\sneume{ql!pf} & \texttt{ql!pf} & \texttt{G35D} & Domine\\
+\sneume{ql!cl-} & \texttt{ql!cl-} & \texttt{C26A} & Alleluia\\
+\sneume{ql!clM} & \texttt{ql!clM} \textit{Cf.} \sneume{ql!clMppt1} & \multicolumn{3}{l}{\texttt{ql!clMppt1} minus tractulus}\\
+\sneume{ql!cl->} & \texttt{ql!cl->} \textit{Cf.} \sneume{ql!cl->ppt1} & \multicolumn{3}{l}{\texttt{ql!cl->ppt1} minus tractulus}\\
+\sneume{ql!cl>} & \texttt{ql!cl>} & \texttt{H26L} & salva & \fbox{0.5x}\\
+\sneume{ql!po} & \texttt{ql!po} & \texttt{C148V} & nostro\\
+\sneume{ql!po-1} & \texttt{ql!po-1} & \texttt{C148A} & Alleluia.\\
+\sneume{ql!po>} & \texttt{ql!po>} & \texttt{H33I} & terram\\
+\sneume{ql!vs} & \texttt{ql!vs} & \texttt{C148A} & refugium\\
+\sneume{ql!vssu2} & \texttt{ql!vssu2} \textit{Cf.} \sneume{ql!vsppt1su2} & \multicolumn{3}{l}{\texttt{ql!vsppt1su2} minus tractulus}\\
+\sneume{ql!vssut2} & \texttt{ql!vssut2} \textit{Cf.} \sneume{ql!vsppt1sut2} & \multicolumn{3}{l}{\texttt{ql!vsppt1sut2} minus tractulus}\\
+\sneume{qi!vs} & \texttt{qi!vs} \textit{Cf.} \sneume{qi!vssu2} & \multicolumn{3}{l}{\texttt{qi!vssu2} minus subbipunctis}\\
+\sneume{qi!vssu2} & \texttt{qi!vssu2} \textit{Cf.} \sneume{qi!vsppt1su2} & \multicolumn{3}{l}{\texttt{qi!vsppt1su2} minus tractulus}\\
+\sneume{ql-su2} & \texttt{ql-su2} \textit{Cf.} \sneume{ql-ppt1su2} & \multicolumn{3}{l}{\texttt{ql-ppt1su2} minus tractulus}\\
+\sneume{ql-sut2} & \texttt{ql-sut2} & \texttt{H73S} & cedebat\\
+\sneume{ql-su1sux1} & \texttt{ql-su1sux1} \textit{Cf.} \sneume{ql-ppt1su1sux1} & \multicolumn{3}{l}{\texttt{ql-ppt1su1sux1} minus tractulus}\\
+\sneume{ql-su1sut2} & \texttt{ql-su1sut2} \textit{Cf.} \sneume{ql-ppt1su1sut2} & \multicolumn{3}{l}{\texttt{ql-ppt1su1sut2} minus tractulus}\\
+\sneume{ql-sut1sux1} & \texttt{ql-sut1sux1} & \texttt{H72H} & complacui\\
+\sneume{ql-suu2} & \texttt{ql-suu2} \textit{Cf.} \sneume{ql-ppt1suu2} & \multicolumn{3}{l}{\texttt{ql-ppt1suu2} minus tractulus}\\
+\sneume{ql-sut2suu1} & \texttt{ql-sut2suu1} \textit{Cf.} \sneume{ql-ppt1sut2suu1} & \multicolumn{3}{l}{\texttt{ql-ppt1sut2suu1} minus tractulus}\\
+\sneume{qi-su2} & \texttt{qi-su2} & \texttt{H73S} & cedebat\\
+\sneume{qi-su1sut2} & \texttt{qi-su1sut2} \textit{Cf.} \sneume{qi-ppt1su1sut2} & \multicolumn{3}{l}{\texttt{qi-ppt1su1sut2} minus tractulus}\\
+\sneume{qi-su1sux1} & \texttt{qi-su1sux1} & \texttt{H26G} & certamine & \fbox{1.7x}\\
+\sneume{qi!cl} & \texttt{qi!cl} & \texttt{C82B} & spiritu\\
+\sneume{qi!cl-} & \texttt{qi!cl-} & \texttt{C148A} & factus\\
+\sneume{qi!cl>} & \texttt{qi!cl>} & \texttt{H77S} & Magi\\
+\sneume{qi!po} & \texttt{qi!po} & \texttt{H87E} & Deus\\
+\sneume{pf!clM-ppt1} & \texttt{pf!clM-ppt1} & \texttt{E327O} & narante & \fbox{2.166x}\\
+\sneume{cl!po>ppt1} & \texttt{cl!po>ppt1} & \texttt{E327O} & narante & \fbox{2.166x}\\
+\sneume{qlppt1} & \texttt{qlppt1} & \texttt{C38T} & Sede\\
+\sneume{qippt1} & \texttt{qippt1} & \texttt{C37A} & Domine\\
+\sneume{qi!clppt1} & \texttt{qi!clppt1} & \texttt{C88T} & hostias,\\
+\sneume{ql-ppt1} & \texttt{ql-ppt1} & \texttt{C26D} & laetitiae.\\
+\sneume{ql>ppt1} & \texttt{ql>ppt1} & \texttt{C38T} & virtutis\\
+\sneume{qi>ppt1} & \texttt{qi>ppt1} & \texttt{C60S} & terram.\\
+\sneume{qisut1sux1} & \texttt{qisut1sux1} & \texttt{H269S} & linguarum\\
+\sneume{qlsut2} & \texttt{qlsut2} & \texttt{H269D} & alleluia\\
+\sneume{qi-sut2} & \texttt{qi-sut2} & \texttt{H269D} & alleluia\\
+\sneume{qi-ppt1su1sut2} & \texttt{qi-ppt1su1sut2} & \texttt{H269R} & magnalia\\
+\sneume{ql!cl>ppt1} & \texttt{ql!cl>ppt1} & \texttt{H73O} & aurum\\
+\sneume{ql!clppt1} & \texttt{ql!clppt1} & \texttt{C39B} & Domini:\\
+\sneume{ql!cl!cl>ppt1} & \texttt{ql!cl!cl>ppt1} & \texttt{E133I} & corda & \fbox{2.166x}\\
+\sneume{ql!cl!pippt1} & \texttt{ql!cl!pippt1} & \texttt{E31T} & maris & \fbox{2.166x}\\
+\sneume{ql!cl-ppt1} & \texttt{ql!cl-ppt1} & \texttt{C40A} & terram.\\
+\sneume{ql!clMppt1} & \texttt{ql!clMppt1} & \texttt{E324R} & tuum & \fbox{2.166x}\\
+\sneume{ql!cl->ppt1} & \texttt{ql!cl->ppt1} & \texttt{G132A} & Alleluia. & \fbox{0.85x}\\
+\sneume{ql!poppt1} & \texttt{ql!poppt1} & \texttt{C59D} & Domine.\\
+\sneume{ql!po-1ppt1} & \texttt{ql!po-1ppt1} & \texttt{C58A} & homo.\\
+\sneume{ql!po~ppt1} & \texttt{ql!po~ppt1} & \texttt{H179L} & pauperem\\
+\sneume{ql!po~} & \texttt{ql!po~} \textit{Cf.} \sneume{ql!po~} & \multicolumn{3}{l}{\texttt{ql!po~} minus tractulus}\\
+\sneume{ql-ppt1su2} & \texttt{ql-ppt1su2} & \texttt{H72V} & Jerusalem\\
+\sneume{ql-ppt1su1sux1} & \texttt{ql-ppt1su1sux1} & \texttt{H73O} & Reges\\
+\sneume{ql-ppt1su1sut2} & \texttt{ql-ppt1su1sut2} & \texttt{H75I} & patris\\
+\sneume{ql-ppt1suu2} & \texttt{ql-ppt1suu2} & \texttt{H72H} & Hic\\
+\sneume{ql-ppt1sut2suu1} & \texttt{ql-ppt1sut2suu1} & \texttt{H16M} & altissimi & \fbox{1.7x}\\
+\sneume{ql!vsppt1su2} & \texttt{ql!vsppt1su2} & \texttt{H73O} & Domino\\
+\sneume{ql!vsppt1} & \texttt{ql!vsppt1} \textit{Cf.} \sneume{ql!vsppt1su2} & \multicolumn{3}{l}{\texttt{ql!vsppt1su2} minus subbipunctis}\\
+\sneume{ql!vsppt1sut2} & \texttt{ql!vsppt1sut2} & \texttt{H73S} & gaudio\\
+\sneume{qi!vsppt1su2} & \texttt{qi!vsppt1su2} & \texttt{H74I} & Domini\\
+\sneume{to!ciG} & \texttt{to!ciG} & \texttt{C28T} & gloriae.\\
+\sneume{to!cl} & \texttt{to!cl} & \texttt{C84T} & pupillo\\
+\sneume{to!cl!cl!cl} & \texttt{to!cl!cl!cl} & \texttt{C64Q} & sepavit,\\
+\sneume{to!cl!po} & \texttt{to!cl!po} & \texttt{E31T} & veritas & \fbox{2.166x}\\
+\sneume{to!cl!po-1} & \texttt{to!cl!po-1} & \texttt{N100T} & veritas\\
+\sneume{to!cl!pi} & \texttt{to!cl!pi} & \texttt{C45S} & mea\\
+\sneume{to!cl-} & \texttt{to!cl-} & \texttt{N86D} & propterea\\
+\sneume{to!cl-!cl-} & \texttt{to!cl-!cl-} & \texttt{C54A} & Adducentur\\
+\sneume{to!cl-1} & \texttt{to!cl-1} & \texttt{C45S} & filiis\\
+\sneume{to!clS} & \texttt{to!clS} & \texttt{C43A} & terram.\\
+\sneume{to!cl!cl} & \texttt{to!cl!cl} & \texttt{C43A} & Domini,\\
+\sneume{to!po} & \texttt{to!po} & \texttt{C64Q} & sagitta\\
+\sneume{to!pr} & \texttt{to!pr} & \texttt{G11V} & Deo & \fbox{0.85x}\\
+\sneume{to!pi} & \texttt{to!pi} & \texttt{C60C} & tui.\\
+\sneume{toSsu2} & \texttt{toSsu2} & \texttt{H72H} & mihi\\
+\sneume{pf!cl-} & \texttt{pf!cl-} & \texttt{G51I} & meus\\
+\sneume{pf!clM-} & \texttt{pf!clM-} \textit{Cf.} \sneume{pf!clM-ppt1} & \multicolumn{3}{l}{\texttt{pf!clM-ppt1} minus tractulus}\\
+\sneume{pf!pr} & \texttt{pf!pr} & \texttt{G9A} & Alleluia\\
+\sneume{cl!po>} & \texttt{cl!po>} \textit{Cf.} \sneume{cl!po>ppt1} & \multicolumn{3}{l}{\texttt{cl!po>ppt1} minus tractulus}\\
+\sneume{cl!cl>1} & \texttt{cl!cl>1} & \texttt{N67G} & mundi\\
+\sneume{cl!clSsut2} & \texttt{cl!clSsut2} & \texttt{E256C} & psallite & \fbox{2.166x}\\
+\sneume{cl!clS} & \texttt{cl!clS} \textit{Cf.} \sneume{cl!clSsut2} & \multicolumn{3}{l}{\texttt{cl!clSsut2} minus 2 tractulis}\\
+\sneume{cl!po} & \texttt{cl!po} & \texttt{C26A} & nobis.\\
+\sneume{cl!po-1} & \texttt{cl!po-1} & \texttt{H119C} & in\\
+\sneume{tr-1su2} & \texttt{tr-1su2} & \texttt{H73O} & dona\\
+\sneume{ci-pp2} & \texttt{ci-pp2} & \texttt{H73S} & magno\\
+\sneume{toS2su2} & \texttt{toS2su2} & \texttt{H73S} & eam\\ \hline
+\end{supertabular}
+
+\begin{supertabular}{llllll}\noindent
+& \multicolumn{4}{l}{\textbf{significative letters}} & \\
+\sneume{lsam} & \texttt{lsam} & \texttt{C87E} & abstraxisti & \multicolumn{2}{l}{altius}\\
+\sneume{lsal} & \texttt{lsal} & \texttt{E20E} & Sion, & altius mediocriter & \fbox{2.166x}\\
+\sneume{lsb} & \texttt{lsb} & \texttt{C39B} & Domino & \multicolumn{2}{l}{bene}\\
+\sneume{lsc} & \texttt{lsc} & \texttt{C27E} & eius & \multicolumn{2}{l}{celeriter}\\
+\sneume{lscw} & \texttt{lscw} & \texttt{C148V} & nostro. & \multicolumn{2}{l}{celeriter (wide form)}\\
+\sneume{lsco} & \texttt{lsco} & \texttt{C134B} & nomen & \multicolumn{2}{l}{coniunguntur}\\
+\sneume{lscm} & \texttt{lscm} & \texttt{C58A} & oblivio & \multicolumn{2}{l}{celeriter mediocriter}\\
+\sneume{lsd} & \texttt{lsd} & \texttt{E11C} & Virgo & deprimatur & \fbox{1.85x}\\
+\sneume{lse} & \texttt{lse} & \texttt{C84T} & adiutor & \multicolumn{2}{l}{equaliter}\\
+\sneume{lsew} & \texttt{lsew} & \texttt{H266D} & si & \multicolumn{2}{l}{equaliter (wide form)}\\
+\sneume{lseq} & \texttt{lseq} & \texttt{C64Q} & viis & \multicolumn{2}{l}{equaliter}\\
+\sneume{lsfid} & \texttt{lsfid} & \texttt{E16B} & Domino & fideliter & \fbox{2.166x}\\
+\sneume{lsfr} & \texttt{lsfr} & \texttt{C58A} & non & \multicolumn{2}{l}{frendor}\\
+\sneume{lsg} & \texttt{lsg} & \texttt{C27Q} & ovem & \multicolumn{2}{l}{gutture}\\
+\sneume{lsi} & \texttt{lsi} & \texttt{C87E} & Domine & \multicolumn{2}{l}{iusum}\\
+\sneume{lsim} & \texttt{lsim} & \texttt{E336I} & universa & iusum mediocriter & \fbox{2.166x}\\
+\sneume{lsiv} & \texttt{lsiv} & \texttt{E92I} & misericors & iusum valde & \fbox{2.166x}\\
+\sneume{lsk} & \texttt{lsk} & \texttt{C62M} & confidit & \multicolumn{2}{l}{klenge}\\
+\sneume{lsl} & \texttt{lsl} & \texttt{C38T} & Tecum & \multicolumn{2}{l}{levare}\\
+\sneume{lslb} & \texttt{lslb} & \texttt{C58A} & non & \multicolumn{2}{l}{levare bene}\\
+\sneume{lslc} & \texttt{lslc} & \texttt{E151A} & ab & levare celeriter & \fbox{2.166x}\\
+\sneume{lslen} & \texttt{lslen} & \texttt{C59D} & servitui. & \multicolumn{2}{l}{leniter}\\
+\sneume{lslm} & \texttt{lslm} & \texttt{C38T} & Tecum & \multicolumn{2}{l}{levare mediocriter}\\
+\sneume{lslp} & \texttt{lslp} & \texttt{E161S} & dicit & levare parvum & \fbox{2.166x}\\
+\sneume{lslt} & \texttt{lslt} & \texttt{E148L} & Laudate & levare tenete & \fbox{2.0x}\\
+\sneume{lsm} & \texttt{lsm} & \texttt{C38T} & principium & \multicolumn{2}{l}{mediocriter}\\
+\sneume{lsmoll} & \texttt{lsmoll} & \texttt{E33V} & fines & molliter & \fbox{2.166x}\\
+\sneume{lsp} & \texttt{lsp} & \texttt{C64Q} & altissimi & \multicolumn{2}{l}{parvum}\\
+\sneume{lspar} & \texttt{lspar} & \texttt{E104S} & miserere & paratim & \fbox{2.166x}\\
+\sneume{lspfec} & \texttt{lspfec} & \texttt{E2D} & fructum & perfecte & \fbox{2.166x}\\
+\sneume{lspm} & \texttt{lspm} & \texttt{C40V} & suam. & \multicolumn{2}{l}{parvum mediocriter}\\
+\sneume{lss} & \texttt{lss} & \texttt{C27E} & sanctos & \multicolumn{2}{l}{sursum}\\
+\sneume{lssb} & \texttt{lssb} & \texttt{C40V} & iustitiam & \multicolumn{2}{l}{sursum bene}\\
+\sneume{lssc} & \texttt{lssc} & \texttt{C84T} & Tibi & \multicolumn{2}{l}{sursum celeriter}\\
+\sneume{lssimil} & \texttt{lssimil} & \texttt{E193D} & ne & similiter & \fbox{2.166x}\\
+\sneume{lssimul} & \texttt{lssimul} & \texttt{E42A} & sumus. & simul & \fbox{2.166x}\\
+\sneume{lssm} & \texttt{lssm} & \texttt{C59D} & Si & \multicolumn{2}{l}{sursum mediocriter}\\
+\sneume{lsst} & \texttt{lsst} & \texttt{C87E} & Domine & \multicolumn{2}{l}{sursum tenere}\\
+\sneume{lssta} & \texttt{lssta} & \texttt{C27E} & Congregate & \multicolumn{2}{l}{statim}\\
+\sneume{lst} & \texttt{lst} & \texttt{C39B} & Domino & \multicolumn{2}{l}{tenete}\\
+\sneume{lstw} & \texttt{lstw} & \texttt{C58A} & non & \multicolumn{2}{l}{tenete (wide form)}\\
+\sneume{lstb} & \texttt{lstb} & \texttt{C39B} & Domino & \multicolumn{2}{l}{tenete bene}\\
+\sneume{lstm} & \texttt{lstm} & \texttt{E3D} & tu & tenete mediocriter & \fbox{2.166x}\\
+\sneume{lsv} & \texttt{lsv} & \texttt{E131O} & semper & valde & \fbox{2.0x}\\
+\sneume{lsvol} & \texttt{lsvol} & \texttt{C58A} & aeternum & \multicolumn{2}{l}{volubiliter}\\
+\sneume{lsx} & \texttt{lsx} & \texttt{C87E} & me: & \multicolumn{2}{l}{expectare}\\ \hline
+\end{supertabular}
+}
+
+\end{document}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef-4_0_0-beta2.pdf b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef-4_0_0-beta2.pdf
new file mode 100644
index 00000000000..63adfd5bdb7
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef-4_0_0-beta2.pdf
Binary files differ
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.lua b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.lua
new file mode 100644
index 00000000000..e48041f92f4
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.lua
@@ -0,0 +1,296 @@
+local P = lpeg.P
+local R = lpeg.R
+local C = lpeg.C
+
+local function sort_keys(table_to_sort, compare)
+ local sorted = {}, key
+ for key in pairs(table_to_sort) do
+ table.insert(sorted, key)
+ end
+ table.sort(sorted, compare)
+ return sorted
+end
+
+local function sort_unique_keys(tables, compare)
+ local set = {}, ignored, table_to_scan, key
+ for ignored, table_to_scan in pairs(tables) do
+ if table_to_scan then
+ for key in pairs(table_to_scan) do
+ set[key] = true
+ end
+ end
+ end
+ return sort_keys(set)
+end
+
+local EXCLUDE = {
+ ['.notdef'] = true,
+ ['.null'] = true,
+ nonmarkingreturn = true,
+ PunctumAuctusLineBL = true,
+ PunctumLineBL = true,
+ PunctumLineBLBR = true,
+ PunctumLineBR = true,
+ PunctumLineTL = true,
+ PunctumLineTR = true,
+ PunctumSmall = true,
+ FlexusNobar = true,
+ FlexusLineBL = true,
+ FlexusAmOneLineBL = true,
+ OriscusLineTR = true,
+ QuilismaLineTR = true,
+ VirgaLineBR = true,
+ SalicusOriscus = true,
+}
+
+local GABC = {
+ Accentus = [[\excluded{g}r1]],
+ AccentusReversus = [[\excluded{g}r2]],
+ Ancus = [[gec]],
+ AncusLongqueue = [[hfd]],
+ AuctumMora = [[\excluded{g}.]],
+ BarBrace = [[\excluded{,}\_]],
+ CClef = [[c3]],
+ CClefChange = [[c3]],
+ Circulus = [[\excluded{g}r3]],
+ CurlyBrace = '[ocb:1;6mm]',
+ CustosDownLong = [[j+]],
+ CustosDownMedium = [[m+]],
+ CustosDownShort = [[k+]],
+ CustosUpLong = [[f+]],
+ CustosUpMedium = [[a+]],
+ CustosUpShort = [[g+]],
+ DivisioDominican = [[,3]],
+ DivisioDominicanAlt = [[,4]],
+ DivisioMaior = [[:]],
+ DivisioMinima = [[,]],
+ DivisioMinor = [[;]],
+ FClef = [[f3]],
+ FClefChange = [[f3]],
+ Flat = [[gx]],
+ FlatHole = [[\excluded{gx}]],
+ Flexus = [[ge]],
+ FlexusLongqueue = [[hf]],
+ FlexusOriscus = [[goe]],
+ FlexusOriscusScapus = [[gOe]],
+ FlexusOriscusScapusLongqueue = [[hOf]],
+ LeadingOriscus = [[go\excluded{igig}]],
+ LeadingPunctum = [[g\excluded{igig}]],
+ LeadingQuilisma = [[gw\excluded{igig}]],
+ Linea = [[g=]],
+ LineaPunctum = [[gR]],
+ LineaPunctumCavum = [[gr0]],
+ LineaPunctumCavumHole = [[\excluded{gr0}]],
+ Natural = [[gy]],
+ NaturalHole = [[\excluded{gy}]],
+ Oriscus = [[go]],
+ OriscusReversus = [[go^^^^003c]],
+ OriscusScapus = [[gO]],
+ OriscusScapusLongqueue = [[hO]],
+ Pes = [[gi]],
+ PesQuadratum = [[gqi]],
+ PesQuadratumLongqueue = [[hqj]],
+ PesQuassus = [[goi]],
+ PesQuassusLongqueue = [[hoj]],
+ PesQuilisma = [[gwi]],
+ PesQuilismaQuadratum = [[gWi]],
+ PesQuilismaQuadratumLongqueue = [[hWj]],
+ Porrectus = [[geg]],
+ PorrectusFlexus = [[gege]],
+ PorrectusFlexusNobar = [[\excluded{e}gege]],
+ PorrectusNobar = [[\excluded{eo}geg]],
+ Punctum = [[g]],
+ PunctumCavum = [[gr]],
+ PunctumCavumHole = [[\excluded{gr}]],
+ PunctumInclinatum = [[G]],
+ PunctumInclinatumAuctus = [[G>]],
+ Quilisma = [[gw]],
+ RoundBrace = '[ob:1;6mm]',
+ RoundBraceDown = '[ub:1;6mm]',
+ Salicus = [[giOk]],
+ SalicusLongqueue = [[hjOl]],
+ Scandicus = [[gik]],
+ Semicirculus = [[\excluded{g}r4]],
+ SemicirculusReversus = [[\excluded{g}r5]],
+ Sharp = [[g\#{}]],
+ SharpHole = [[\excluded{g\#{}}]],
+ Stropha = [[gs]],
+ StrophaAucta = [[gs>]],
+ Torculus = [[gig]],
+ TorculusLiquescens = [[gige]],
+ TorculusLiquescensQuilisma = [[gwige]],
+ TorculusQuilisma = [[gwig]],
+ TorculusResupinus = [[gigi]],
+ TorculusResupinusQuilisma = [[gwigi]],
+ VEpisemus = [[\excluded{g}^^^^0027]],
+ Virga = [[gv]],
+ VirgaLongqueue = [[hv]],
+ VirgaReversa = [[gV]],
+ VirgaReversaLongqueue = [[hV]],
+ VirgaStrata = [[giO]],
+ Virgula = [[^^^^0060]],
+}
+
+local DEBILIS = {
+ InitioDebilis = [[-]],
+ [''] = [[]],
+}
+
+local LIQUESCENCE = {
+ Ascendens = [[<]],
+ Descendens = [[>]],
+ Deminutus = [[\~{}]],
+ Nothing = [[]],
+ [''] = [[]],
+}
+
+GregorioRef = {}
+
+function GregorioRef.emit_score_glyphs(cs_greciliae, cs_gregorio, cs_parmesan)
+ local common_glyphs = {}
+ local greciliae = {}
+ local gregorio = {}
+ local parmesan = {}
+
+ local function index_font(csname, variants, common)
+ local glyphs = font.fonts[font.id(csname)].resources.unicodes
+ local glyph, cp
+ for glyph, cp in pairs(glyphs) do
+ if cp >= 0xe000 and not EXCLUDE[glyph] and not glyph:match('^HEpisemus') then
+ local name, variant = glyph:match('^([^.]*)(%.%a*)$')
+ if name then
+ local glyph_variants = variants[name]
+ if glyph_variants == nil then
+ glyph_variants = {}
+ variants[name] = glyph_variants
+ end
+ glyph_variants[variant] = cp
+ elseif common then
+ common[glyph] = cp
+ end
+ end
+ end
+ end
+
+ index_font(cs_greciliae, greciliae, common_glyphs)
+ index_font(cs_gregorio, gregorio)
+ index_font(cs_parmesan, parmesan)
+
+ local function maybe_emit_glyph(csname, variants, name, variant)
+ local cp = variants[name]
+ if cp then
+ cp = cp[variant]
+ if cp then
+ tex.sprint(string.format([[&{\%s\char%d}]], csname, cp))
+ end
+ end
+ if not cp then
+ tex.sprint(string.format([[&{\tiny\itshape N/A}]], csname, cp))
+ end
+ end
+
+ local function emit_score_glyph(shape, ambitus, debilis, liquescence)
+ local name = shape..ambitus..debilis..liquescence
+ local char = common_glyphs[name]
+ local gabc = GABC[shape]
+ if gabc then
+ gabc = '('..DEBILIS[debilis]..gabc..LIQUESCENCE[liquescence]..')'
+ end
+ tex.sprint(string.format(
+ [[{\scriptsize {\bfseries %s}{\itshape %s}%s%s}&{\ttfamily\small %s}&{\%s\char%d}&{\%s\char%d}&{\%s\char%d}&]],
+ shape, ambitus, debilis, liquescence, gabc or '', cs_greciliae, char, cs_gregorio, char, cs_parmesan, char
+ ))
+ local emitted = false, i, variant
+ for i, variant in ipairs(sort_unique_keys{greciliae[name], gregorio[name], parmesan[name]}) do
+ if emitted then
+ tex.sprint([[\nopagebreak&&&&&]])
+ else
+ emitted = true
+ end
+ tex.sprint(string.format([[{\scriptsize %s}]], variant))
+ maybe_emit_glyph('greciliae', greciliae, name, variant)
+ maybe_emit_glyph('gregorio', gregorio, name, variant)
+ maybe_emit_glyph('parmesan', parmesan, name, variant)
+ tex.print([[\\]])
+ end
+ if not emitted then
+ tex.print([[&&&\\]])
+ end
+ end
+
+ local glyph_names = {}
+ local ambitus = P'One' + P'Two' + P'Three' + P'Four' + P'Five'
+ local majuscule = R'AZ'
+ local minuscule = R'az'
+ local debilis = P'InitioDebilis'
+ local liquescentia = P'Nothing' + P'Deminutus' + P'Ascendens' + P'Descendens'
+ local word = (majuscule * minuscule^0) - ambitus - debilis - liquescentia
+ local liquescence = debilis^-1 * liquescentia^-1
+ local pattern = C(word^1) * C(ambitus^0) * C(debilis^-1) * C(liquescentia^-1) * -1
+ local only_twos = P'Two'^1 * -1
+ for name in pairs(common_glyphs) do
+ local a, b, c, d = pattern:match(name)
+ if a then
+ table.insert(glyph_names, { a, b, c, d })
+ else
+ tex.error('Unable to parse '..name)
+ end
+ end
+ local function compare(x, y)
+ if x[1] < y[1] then
+ return true
+ elseif x[1] == y[1] then
+ if x[3] < y[3] then
+ return true
+ elseif x[3] == y[3] then
+ if x[4] < y[4] then
+ return true
+ elseif x[4] == y[4] and x[2] < y[2] then
+ return true
+ end
+ end
+ end
+ return false
+ end
+ table.sort(glyph_names, compare)
+ local first = true
+ local i, name
+ for i, name in ipairs(glyph_names) do
+ if not EXCLUDE[name[1]] then
+ if (name[2] == '' and name[4] == '') or name[2] == '' or only_twos:match(name[2]) then
+ if first then
+ first = false
+ else
+ tex.print([[\hline]])
+ end
+ emit_score_glyph(name[1], name[2], name[3], name[4])
+ end
+ end
+ end
+end
+
+function GregorioRef.emit_extra_glyphs(csname)
+ local glyphs = font.fonts[font.id(csname)].resources.unicodes
+ local first = true
+ local odd = true
+ for i, name in ipairs(sort_keys(glyphs)) do
+ local cp = glyphs[name]
+ if cp >= 0xe000 and not EXCLUDE[name] then
+ if first then
+ first = false
+ elseif odd then
+ tex.print([[\hline]])
+ end
+ tex.sprint(string.format([[{\scriptsize %s}&{\%s\char%d}]], name, csname, cp))
+ if odd then
+ tex.sprint([[&]])
+ else
+ tex.print([[\\]])
+ end
+ odd = not odd
+ end
+ end
+ if not odd then
+ tex.print([[&\\]])
+ end
+end
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.tex
new file mode 100644
index 00000000000..16a8c3c455e
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/GregorioRef.tex
@@ -0,0 +1,188 @@
+% !TEX program = LuaLaTeX+se
+\documentclass[12pt,a4paper]{article}
+\usepackage[titletoc,toc,title]{appendix}
+\usepackage{fontspec}
+\defaultfontfeatures{Ligatures=TeX}
+\setmainfont[
+ BoldFont=LinLibertineOZ,
+ BoldItalicFont=LinLibertineOZI,
+ SmallCapsFont=LinLibertineO,
+ SmallCapsFeatures={Letters=SmallCaps},
+]{LinuxLibertineO}
+\setsansfont[Extension=.otf,
+ BoldFont=LinBiolinum_RB,
+ ItalicFont=LinBiolinum_RI,
+ BoldItalicFont=LinBiolinum_RB,% fake
+ SmallCapsFont=LinBiolinum_R,
+ SmallCapsFeatures={Letters=SmallCaps},
+ ]{LinBiolinum_R}
+\setmonofont[Extension=.otf,
+ ItalicFont=Inconsolatazi4-Regular,
+ BoldFont=Inconsolatazi4-Bold,
+ BoldItalicFont=Inconsolatazi4-Bold,
+ AutoFakeSlant,
+ ItalicFeatures={FakeSlant},
+ BoldItalicFeatures={FakeSlant}
+ ]{Inconsolatazi4-Regular}
+\usepackage{enumitem}
+\usepackage{xspace}
+\usepackage{multicol}
+\usepackage{units}
+\usepackage{framed}
+\usepackage{url}
+
+\usepackage{makeidx}
+\makeindex
+
+\usepackage[table]{xcolor}
+\definecolor{lightgray}{gray}{0.9}
+\definecolor{green}{HTML}{0c700c}
+\definecolor{myred}{HTML}{FF3333}
+
+\usepackage{minted} % must be after xcolor
+\newminted{latex}{gobble=1,bgcolor=lightgray}% Originally had 'gobble=2' but this creates problems on systems where the 2-space indentation is switched out for single tabs (Br. Samuel's, for one, does this). Should be set to autogobble once every developer is using TeXLive 2015 or later (as the autogobble feature doesn't appear in TeXLive 2014 or earlier).
+%\newminted{gabc}{bgcolor=lightgray} % can this be done?
+\newenvironment{gabccode}{\tt}{}
+
+
+\usepackage{gregoriotex}
+
+\usepackage{carolmin}
+\usepackage{mflogo}
+
+\usepackage{hyperref}
+\hypersetup{colorlinks, citecolor=black, filecolor=black, linkcolor=green, urlcolor=green}
+
+\usepackage{longtable}
+\usepackage{multirow}
+\usepackage{pdflscape}
+\usepackage{hhline}
+\usepackage{listings}
+\directlua{dofile('GregorioRef.lua')}
+
+\newcommand*{\eg}{e.g.\@\xspace}
+\newcommand*{\nb}{n.b.\@\xspace}
+\newcommand*{\ie}{i.e.\@\xspace}
+\newcommand*{\etc}{etc.\@\xspace}
+
+\newcommand{\macroname}[3]{%
+ \vspace{3.25ex plus 1ex minus .2ex}%
+ \makebox[\linewidth]{\ttfamily\bfseries #1#2%
+ \hspace{\fill}\normalfont\itshape #3}%
+ \vspace{1.5ex plus .2ex}%
+ \index{#1}}
+ %\addcontentsline{toc}{subsubsection}{#1}}
+
+\newcommand{\optional}[1]{{\itshape #1}}
+
+\lstset{backgroundcolor=\color{lightgray},
+ basicstyle=\small\ttfamily,
+ numbers=left,
+ numberstyle=\footnotesize,
+ stepnumber=1,
+ numbersep=5pt}
+
+% for the character tables
+\font\greciliae = {name:greciliae} at 1000000 sp\relax
+\font\gregorio = {name:gregorio} at 1000000 sp\relax
+\font\parmesan = {name:parmesan} at 1000000 sp\relax
+\font\greciliaeOp = {name:greciliae-op} at 1000000 sp\relax
+\font\gregorioOp = {name:gregorio-op} at 1000000 sp\relax
+\font\parmesanOp = {name:parmesan-op} at 1000000 sp\relax
+\font\greextra = {name:greextra} at 12 pt\relax
+\newcommand{\excluded}[1]{{\tiny\itshape #1}}
+
+\newenvironment{argtable}{%
+ \bigskip\rowcolors{1}{lightgray}{lightgray}
+ \begin{tabular}{clp{10cm plus .5cm}}
+ Arg & Value & Description \\
+ \hline}%
+ {\end{tabular}\bigskip}
+
+\setlength{\parindent}{0mm} % Default is 15pt
+
+\begin{document}
+
+\begin{titlepage}
+ \begin{center}
+ \Huge
+ \textcolor{myred}{Gregorio} and \textcolor{myred}{Gregorio\TeX}:
+
+ Tools for gregorian score engraving.
+
+ \vspace{1cm}
+
+ \large Version \textbf{4.0.0-beta2},26 August 2015 %% PARSE_VERSION_DATE
+
+ \vspace{1.5cm}
+ \end{center}
+ \gresetlinecolor{gregoriocolor}
+ \def\grelowchoralsignstyle#1{{\cminfamily\small#1}}%
+ \def\grehighchoralsignstyle#1{{\cminfamily\small#1}}%
+ \def\GreStar{\greheightstar}%
+ \greannotation{\scriptsize{Comm.}}%
+ \greannotation{\scriptsize{VII}}%
+ \begingroup%
+ \color{black!60}%
+ \setmainfont[SmallCapsFont=AlegreyaSC]{Alegreya}%
+ \newlength{\mini}%
+ \setlength{\mini}{\hsize}%
+ \addtolength{\mini}{-4cm}%
+ \setlength{\fboxsep}{5mm}%
+ \hfill\fbox{\parbox{\mini}{\gregorioscore[f]{factus}}}\hfill%
+ \endgroup
+ \begin{center}
+ \vspace{1.5cm}%
+ \href{http://gregorio-project.github.io/}{Homepage}
+
+ Source code available on
+ \href{http://github.com/gregorio-project/gregorio}{GitHub}.
+ \end{center}
+
+ \vspace{2cm}
+\end{titlepage}
+
+\cleardoublepage
+
+\tableofcontents
+
+\cleardoublepage
+
+\section{Gregorio\TeX{} Macros}
+The following sections document the macros available in the Gregorio\TeX{} package. The format is as follows:
+
+\macroname{MacroName}{\{Args\}}{Source File}
+Description of macro.
+
+\begin{argtable}
+ Arg \# & Data type & Description of argument\\
+\end{argtable}
+
+The source file where the macro is defined is included for developers
+who wish to consult it.\\
+Some of the macros intended for inclusion in the main.tex file by the user
+include usage examples.
+
+Macros are divided into three groups:
+\begin{description}
+\item[User Commands] These macros are meant to be used by your average user in their \TeX\ files in order to fine tune the appearance of their scores. They should have names which consist solely of lowercase letters and be prefixed with the \texttt{gre}. Where the name clearly identifies the function as belonging to Gregorio\TeX, the prefix may be omitted.
+\item[Gregorio Controls] These macros are written by the command line tool to gtex files and should not appear outside of gtex files. They should have names which are in CamelCase and be prefixed with \texttt{Gre}.
+\item[Gregorio\TeX\ internals] These macros are used by Gregorio\TeX\ to process and typeset a score and should not appear in a user's document anywhere (not even in gtex files). They should have names which are all lowercase and be prefixed with \makeatletter\texttt{gre@}\makeatother.
+\end{description}
+
+
+\input{Command_Index_User}
+\input{Command_Index_gregorio}
+\input{Command_Index_internal}
+\input{Gabc}
+
+\begin{appendices}
+ \renewcommand\thetable{\thesection\arabic{table}}
+ \renewcommand\thefigure{\thesection\arabic{figure}}
+ \input{Appendix_Font_Tables}
+\end{appendices}
+
+\addcontentsline{toc}{section}{Index}
+\printindex
+
+\end{document}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Makefile.am b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Makefile.am
new file mode 100644
index 00000000000..0c971c18a05
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/Makefile.am
@@ -0,0 +1,58 @@
+# Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+#
+# This file is part of Gregorio.
+#
+# Gregorio 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.
+#
+# Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+# GregorioRef.tex must be the first source file
+SRCFILES = GregorioRef.tex Command_Index_gregorio.tex \
+ Command_Index_internal.tex Command_Index_User.tex \
+ Gabc.tex Appendix_Font_Tables.tex GregorioRef.lua factus.gabc
+NABCSRCFILES = GregorioNabcRef.tex veni.gabc
+
+.NOTPARALLEL:
+
+# I know these rules look wrong, but they must not depend on anything that
+# gets generated or make distcheck will fail.
+
+GregorioRef-@FILENAME_VERSION@.pdf: $(SRCFILES)
+ $(MAKE) $(AM_MAKEFLAGS) -C ../src gregorio
+ ../src/gregorio -o factus.gtex $(<D)/factus.gabc
+ TEXINPUTS=$(<D):$(<D)/../tex: LUAINPUTS=$(<D):$(<D)/../tex: \
+ TTFONTS=$(<D)/../fonts: PATH=../src:${PATH} latexmk -recorder -pdf \
+ -pdflatex='lualatex --shell-escape %O %S' \
+ -jobname=GregorioRef-@FILENAME_VERSION@ $<
+
+GregorioNabcRef-@FILENAME_VERSION@.pdf: $(NABCSRCFILES)
+ $(MAKE) $(AM_MAKEFLAGS) -C ../src gregorio
+ ../src/gregorio -o veni.gtex $(<D)/veni.gabc
+ TEXINPUTS=$(<D):$(<D)/../tex: LUAINPUTS=$(<D):$(<D)/../tex: \
+ TTFONTS=$(<D)/../fonts: PATH=../src:${PATH} latexmk -recorder -pdf \
+ -pdflatex='lualatex --shell-escape %O %S' \
+ -jobname=GregorioNabcRef-@FILENAME_VERSION@ $<
+
+doc: GregorioRef-$(FILENAME_VERSION).pdf GregorioNabcRef-$(FILENAME_VERSION).pdf
+
+pdf-local: doc
+
+distclean-local:
+ latexmk -quiet -c -f -jobname=GregorioRef-@FILENAME_VERSION@ GregorioRef.tex
+ latexmk -quiet -c -f -jobname=GregorioNabcRef-@FILENAME_VERSION@ GregorioNabcRef.tex
+ rm -rf _minted* factus.gtex veni.gtex
+
+EXTRA_DIST = $(SRCFILES) $(NABCSRCFILES) \
+ GregorioRef-@FILENAME_VERSION@.pdf \
+ GregorioNabcRef-@FILENAME_VERSION@.pdf
+MAINTAINERCLEANFILES = GregorioRef-@FILENAME_VERSION@.pdf \
+ GregorioNabcRef-@FILENAME_VERSION@.pdf
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/factus.gabc b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/factus.gabc
new file mode 100644
index 00000000000..b152d5a8219
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/factus.gabc
@@ -0,0 +1,17 @@
+name: Factus est repente;
+office-part: Communio;
+occasion: Dominica Pentecostes ad Missam in die;
+book: Graduale Novum;
+mode: 7;
+initial-style: 1;
+user-notes: with choral annotations and episema from the non-diastematic neumes;
+annotation: Comm.;
+annotation: VII.;
+%%
+(c3) F<sc>Ac</sc>(e)<sc>tus</sc>(ei) est(i) re(i)pen(i)te(f[cs:t]) <sp>*</sp>()
+de(i) cæ(i)lo(h) so(kjk[cs:c]i)nus(i) (,)
+ad(i)ve(i)ni(ij)en(j[cs:t]i~)tis(ji__) spi(hj)ri(i)tus(h)
+vehe(h_f!gwh)men(hi~)tis,(g) (;)
+u(eh[cs:c]g)bi(h) e(iji)rant(hi[cs:t]h)
+se(h[cs:c]g)den-(fhg[cs:c]e~)tes,(fe__) (,)
+al(eg~)le(gv_/fhg)lu(ef[cs:t]e)ia:(e) (:e+)
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/veni.gabc b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/veni.gabc
new file mode 100644
index 00000000000..a5ab3ab0b39
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/doc/veni.gabc
@@ -0,0 +1,21 @@
+name: Veni Sancte Spiritus;
+office-part: Alleluia;
+mode: 2;
+book: Graduale Romanum, 1908, p. 249; Graduale Triplex, 1979, p. 253; Sg. 376 p. 296;
+transcriber: Andrew Hinkley, Jakub Jelínek;
+initial-style: 1;
+nabc-lines: 1;
+annotation: II;
+%%
+(f3)
+AL(ef~|ta>)le(fg/hggf|peclhgpi)lú(ef~|ta>)ia.(f.|ta-) (,)
+(ii//|bv-|gh!ivHG//|vi-hhppu2su1sut1|fhg/|to|eef.|pt) (;)
+(kxjj//|/////bv-|ikJI'/|pe-hhsu1sut1|ivHF.//|vi-su2sut1|giHG'E/|pe-su2suy1|ggf.|pr) <sp>V/</sp>.(::)
+Ve(e!fwg/|``qlppt1|hggf/ef|ci-or>peS)ni(f.|vi-) (,)
+Sanc(f|vi-)te(g!hwi|ql-ppt1) Spí(iv.//|vi-|hig/|tohh|hfg|cl-hhvi-hi)ri(gef|po-1)tus,(f.|vi-) (;)
+re(h|vi-)plé(gvFEf/ggf.|vi-su1sut1vi-hhpr-hh) (,)
+tu(f|ta)ó(hg|vi-)rum(hi|pe->) cor(i_|vi>)da(ghfg|vi-po-1hh) fi(g|vi-)dé(gf|cl-hh)li(ef|pehh)um:(f.|vi-hh) (:)
+et(g|vi-) tu(i|vi-)i(ij|pe) a(j|vi-)mór(kxkvJI'/|/////vi-hhsu1sut1|ivHF.//|vi-su1sut1|ghGF'/|pe-su1sut1|ef.,|pi|kxeg//i_j!kvJI'/ivHF.//|tahksaM-4hkvi-hisu1sut1vi-hisu1sut1|ghGF'/|``pe-su1sut1|ef.//|``pi|e!fwg'!hv|``ql-ppt1vi-hj)is(g.|//vi-) (;)
+in(gef|po-1) e(gf|cl)is(f.|ta-) ig(ef~|ta>)nem(f|vi-) ac(fg/hggf|pecl!pr)cén(ef~|ta>)de.(f.|vi-) (,)
+(ii//|bv-|gh!ivHG//|vi-hhppt2su1sut1|fhg//|to|eef.|pt) (;)
+(kxjj//ikJI'/ivHF.//giHG'E/ggf.) (::)
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/FactusEst.gabc b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/FactusEst.gabc
new file mode 100644
index 00000000000..fc4a467e5d2
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/FactusEst.gabc
@@ -0,0 +1,25 @@
+% !TEX TS-program = LuaLaTeX+se
+% !TEX root = main-lualatex.tex
+
+% This example demonstrates the use of nabc
+
+name: Factus est cum Alleluia;
+office-part: Communio;
+mode: 7;
+book: Graduale Romanum, 1961, p. 296;
+transcriber: Andrew Hinkley, Jakub Jelínek;
+initial-style: 1;
+
+% You have to put the number of nabc lines here, only 1 is allowed for now
+
+nabc-lines: 1;
+%%
+(c3)
+FAc(e|talsi8)tus(ei|pe) est(i|vi) re(i|vihh)pén(i|vihi)te(e.|tahglsi9) de(i|vihhlsl2) cæ(i|vihhlse1)lo(h|ta) so(kjki|pfhhlsl2lsc2)nus(i.|ta) (,)
+ad(i|talse8)ve(i|ta)ni(ij|pe)én(ji~|vi>lst2)tis(j_i|cl-hh) spí(hj|````peSlsl3lsm7lsi8)ri(i|vi)tus(h|ta) ve(h.|cl-lse4)he(f!gwh|ql)mén(hi~|ta>)tis,(h.|vi) (;)
+u(hg|tolsi7lsc2)bi(h|vi) e(iji|to)rant(hih|tolst2lss9lsc7) se(hg|cllsc3lse7)dén(fhG'E|to>lsc2lsi9)tes,(fe..|cl-) (,)
+al(eg~|````ta>lse4)le(gv./fhg|vi-tohhlsi7lss6)lú(efe___|toS)ia:(e.|ta) (:)
+et(e|talse4) re(f|vilsc1)plé(h!i'j|vi-hhpehjlss7)ti(i|ta) sunt(i|ta) om(ij~|ta>)nes(i|talse6) Spí(j|vihh)ri(i|vi)tu(h|talsc3) Sanc(ij~|ta>lss1)to,(j.|vi) (;)
+lo(i|vilsim2)quén(hg/h_ih~|cllsc2pq>lst2)tes(f|ta) ma(eg~|```ta>lse4lsl3)gná(ghg___//e!f'g|vicl-sahhlsi7)li(fd|clMlsc3lsi9)a(f|vi) De(efe___|toS)i,(e.|ta) (;)
+al(eg~|ta>lsl1lsp2)le(g|vi)lú(hih|to>)ia,(f.|vi) (,)
+al(eg~|ta>lsi8)le(gv.fhg|vi-tohi)lú(efe___|toS)ia.(e.|ta) (::)
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/Makefile.am b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/Makefile.am
new file mode 100644
index 00000000000..2d75dfa24ea
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/Makefile.am
@@ -0,0 +1,18 @@
+# Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+#
+# This file is part of Gregorio.
+#
+# Gregorio 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.
+#
+# Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+EXTRA_DIST=PopulusSion.gabc main-lualatex.tex FactusEst.gabc
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/PopulusSion.gabc b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/PopulusSion.gabc
new file mode 100644
index 00000000000..bf1476914c6
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/PopulusSion.gabc
@@ -0,0 +1,26 @@
+% !TEX TS-program = LuaLaTeX+se
+% !TEX root = main-lualatex.tex
+
+% The first part of the score is called the header, you can input some useful informations here:
+
+name: Pópulus Sion;
+office-part: Introitus;
+occasion: Dominica II Adventus;
+date: 2006;
+transcriber: Elie Roux;
+transcription-date: 2006;
+style: modern;
+
+% Then, when gregorio encounters the following line (%%), it switches to the score, where you input the notes
+
+%%
+
+% The syntax in this part is called gabc. Please refer to http://home.gna.org/gregorio/gabc/#basis
+
+Pó(c3eh)pu(g)lus(h) Si(hi)on,(hgh.) *(;) ec(hihi)ce(e.) Dó(e.f!gwhhi)mi(h){n}us(h) vé(hi)ni(ig//ih)et(h.) (,) ad(iv./hig) sal(fe)ván(ghg)das(fg) gen(e_f_e_)tes(e.) :(:)
+
+et(e) au(eh)dí(hhi)tam(i) fá(kjki)ci(i)et(i) Dó(ij)mi(ihi)nus(iv./hiHF) (,) gló(h!i'j)ri(ji!kvJI)am(ij) vo(j.i!jwk)cis(ji) su(i_j_i_)æ,(i.) (;) in(e) læ(e)tí(e!f'h)ti(h)a(hi!jVji)
+
+cor(gh!ijI'H<)dis(ihhf!gwh) ve(e_f_e_)stri.(e) Ps.(::) Qui(ehg) re(hi)gis(i) I(i)sra(i)el,(hj) in(j)tén(ji)de(ij..) :*(:) qui(ig) de(hi)dú(i)cis(i)
+
+vel(i)ut(i!jwk) o(i')vem(h) Jo(hhh)seph.(fe..) (::) Gló(ehg)ri(hi)a(i) Pa(i)tri.(i) (:) E(i) u(i!jwk) o(i) u(h) a(hhh) e(fe..) (::)
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/main-lualatex.tex b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/main-lualatex.tex
new file mode 100644
index 00000000000..64b2f3d6375
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/examples/main-lualatex.tex
@@ -0,0 +1,46 @@
+% !TEX TS-program = LuaLaTeX+se
+
+% This is a simple template for a LuaLaTeX document using gregorio scores.
+
+\documentclass[11pt]{article} % use larger type; default would be 10pt
+
+% usual packages loading:
+\usepackage{fontspec}
+\usepackage{graphicx} % support the \includegraphics command and options
+\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots.
+\geometry{a4paper} % or letterpaper (US) or a5paper or....
+\usepackage{gregoriotex} % for gregorio score inclusion
+\usepackage{gregoriosyms} % to be able to define \ABar, \VBar, etc.
+\usepackage{fullpage} % to reduce the margins
+\usepackage{libertine} % Decent (free) font for Gregorian, but should be changed if you have high standards
+
+\begin{document}
+
+% The title:
+\begin{center}\begin{huge}\textsc{Populus Sion}\end{huge}\end{center}
+
+% Here we set the space around the initial.
+% Please report to http://home.gna.org/gregorio/gregoriotex/details for more details and options
+\setspaceafterinitial{2.2mm}{1}
+\setspacebeforeinitial{2.2mm}{1}
+
+% Here we set the initial font. Change 43 if you want a bigger initial.
+\def\greinitialformat#1{%
+{\fontsize{43}{43}\selectfont #1}%
+}
+
+% We set red lines here, comment it if you want black ones.
+\redlines
+
+% We set VII above the initial.
+\gresetfirstlineaboveinitial{\small \textsc{\textbf{VII}}}{\small \textsc{\textbf{VII}}}
+
+% We type a text in the top right corner of the score:
+\commentary{{\small \emph{Cf. Is. 30, 19 . 30 ; Ps. 79}}}
+
+% and finally we include the scores. The file must be in the same directory as this one.
+\includescore[a]{PopulusSion}
+
+\includescore[a]{FactusEst}
+
+\end{document}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/install-gtex.sh b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/install-gtex.sh
new file mode 100755
index 00000000000..d0183efae3e
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/install-gtex.sh
@@ -0,0 +1,155 @@
+#!/bin/bash
+
+# Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+#
+# This file is part of Gregorio.
+#
+# Gregorio 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.
+#
+# Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+# This script installs the GregorioTeX portion of Gregorio.
+#
+# There are four ways to use this script:
+#
+# install-gtex.sh var:{tex-variable}
+#
+# Installs GregorioTeX into the directory named by the given {tex-variable}.
+# If the DESTDIR environment variable is set, it will be prepended.
+#
+# Example: install-gtex.sh var:TEXMFLOCAL
+# - Installs GregorioTeX into the system-wide TEXMF directory
+#
+# Example: install-gtex.sh var:TEXMFHOME
+# - Installs GregorioTeX into the user's personal TEXMF directory
+#
+# install-gtex.sh system|user
+#
+# Installs GregorioTeX into one of two common install locations. If the
+# DESTDIR environment variable is set, it will be prepended.
+#
+# Example: install-gtex.sh system
+# - Installs GregorioTeX into the system-wide TEXMF directory; an alias for
+# install-gtex.sh var:TEXMFLOCAL
+#
+# Example: install-gtex.sh user
+# - Installs GregorioTeX into the user's personal TEXMF directory; an alias
+# for install-gtex.sh var:TEXMFHOME
+#
+# install-gtex.sh dir:{directory}
+#
+# Installs GregorioTeX into the {directory} directory.
+#
+# Example: install-gtex.sh dir:/tmp/gtex
+# - Installs GregorioTeX into /tmp/gtex
+#
+# install-gtex.sh tds
+#
+# Creates a TDS-ready archive named gregoriotex.tds.zip
+#
+
+TEXFILES=(tex/*.tex tex/gregorio*.sty tex/*.lua tex/*.dat)
+TTFFILES=(gregorio.ttf greciliae.ttf parmesan.ttf gregorio-op.ttf
+ greciliae-op.ttf parmesan-op.ttf greextra.ttf gregall.ttf
+ gresgmodern.ttf)
+DOCFILES=(fonts/README.md)
+FONTSRCFILES=(gregorio-base.sfd parmesan-base.sfd greciliae-base.sfd
+ greextra.sfd squarize.py convertsfdtottf.py gregall.sfd
+ gresgmodern.sfd)
+
+NAME=${NAME:-gregoriotex}
+FORMAT=${FORMAT:-luatex}
+TEXHASH=${TEXHASH:-texhash}
+KPSEWHICH=${KPSEWHICH:-kpsewhich}
+CP=${CP:-cp}
+
+TTFFILES=("${TTFFILES[@]/#/fonts/}")
+FONTSRCFILES=("${FONTSRCFILES[@]/#/fonts/}")
+
+arg="$1"
+case "$arg" in
+ system)
+ arg='var:TEXMFLOCAL'
+ ;;
+ user)
+ arg='var:TEXMFHOME'
+ ;;
+esac
+
+case "$arg" in
+ "")
+ ;;
+ tds)
+ TDS_ZIP="${NAME}.tds.zip"
+ TEXMFROOT=./tmp-texmf
+ ;;
+ var:*)
+ TEXMFROOT=`${KPSEWHICH} -expand-path "\$${arg#var:}"`
+ if [ "$TEXMFROOT" = "" ]
+ then
+ TEXMFROOT=`${KPSEWHICH} -var-value "${arg#var:}"`
+ fi
+ if [ "$TEXMFROOT" = "" ]
+ then
+ echo "Invalid TeX variable: '${arg#var:}'"
+ echo
+ else
+ sep=`${KPSEWHICH} -expand-path "{.,.}"`
+ sep="${sep#.}"
+ sep="${sep%.}"
+ TEXMFROOT="${DESTDIR}${TEXMFROOT/${sep}*/}"
+ fi
+ ;;
+ dir:*)
+ TEXMFROOT="${arg#dir:}"
+ ;;
+ *)
+ echo "Invalid argument: '$arg'"
+ echo
+ ;;
+esac
+
+if [ "$TEXMFROOT" = "" ]
+then
+ echo "Usage: $0 var:{tex-variable}"
+ echo " $0 dir:{directory}"
+ echo " $0 system|user|tds"
+ exit 1
+fi
+
+function die {
+ echo 'Failed.'
+ exit 1
+}
+
+function install_to {
+ dir="$1"
+ shift
+ mkdir -p "$dir" || die
+ $CP "$@" "$dir" || die
+}
+
+echo "Installing in '${TEXMFROOT}'."
+install_to "${TEXMFROOT}/tex/${FORMAT}/${NAME}" "${TEXFILES[@]}"
+install_to "${TEXMFROOT}/fonts/truetype/public/${NAME}" "${TTFFILES[@]}"
+install_to "${TEXMFROOT}/doc/${FORMAT}/${NAME}" "${DOCFILES[@]}"
+install_to "${TEXMFROOT}/fonts/source/${NAME}" "${FONTSRCFILES[@]}"
+
+if [ "$arg" = 'tds' ]
+then
+ echo "Making TDS-ready archive ${TDS_ZIP}."
+ rm -f ${TDS_ZIP}
+ (cd ${TEXMFROOT} && zip -9 ../${TDS_ZIP} -q -r .) || die
+ rm -r ${TEXMFROOT} || die
+else
+ ${TEXHASH} || die
+fi
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/install.sh b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/install.sh
new file mode 100755
index 00000000000..91ff8e5ccc1
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/install.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+# Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+#
+# This file is part of Gregorio.
+#
+# Gregorio 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.
+#
+# Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+# This script installs Gregorio and GregorioTeX as cloned from GitHub and built
+# using build.sh for a GNU system (like GNU/Linux), using default options.
+#
+# For now, it passes its argument to install-gtex.sh, defaulting to system.
+#
+# If you need something more complex, you probably know more than we do, so run
+# the commands manually.
+
+function die {
+ echo "Failed to $1. Did you forget to run as root?"
+ exit 1
+}
+
+echo "Installing Gregorio"
+make install || die "install Gregorio"
+echo
+
+echo "Installing GregorioTeX"
+./install-gtex.sh "${1:-system}" || die "install GregorioTeX"
+echo
+
+echo "Installation complete."
+
+exit 0
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_compile_flag.m4 b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_compile_flag.m4
new file mode 100644
index 00000000000..a7680d72ef8
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_compile_flag.m4
@@ -0,0 +1,75 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the current language's compiler
+# or gives an error. (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the current language's default
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
+# force the compiler to issue an error when a bad flag is given.
+#
+# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.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 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 4
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_link_flag.m4 b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_link_flag.m4
new file mode 100644
index 00000000000..9352950ed58
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/ax_check_link_flag.m4
@@ -0,0 +1,75 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the linker or gives an error.
+# (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the linker's default flags
+# when the check is done. The check is thus made with the flags: "LDFLAGS
+# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
+# issue an error when a bad flag is given.
+#
+# INPUT gives an alternative input source to AC_LINK_IFELSE.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.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 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 4
+
+AC_DEFUN([AX_CHECK_LINK_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
+AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
+ ax_check_save_flags=$LDFLAGS
+ LDFLAGS="$LDFLAGS $4 $1"
+ AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ LDFLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_LINK_FLAGS
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/pkg.m4 b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/pkg.m4
new file mode 100644
index 00000000000..75a89ecfe73
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/m4/pkg.m4
@@ -0,0 +1,287 @@
+# 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
+
+# PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+# [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
+# [DESCRIPTION], [DEFAULT])
+#
+# Prepare a "--with-" configure option using the lowercase [VARIABLE-PREFIX]
+# name, merging the behaviour of AC_ARG_WITH and PKG_CHECK_MODULES in a single
+# macro
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_WITH_MODULES],
+[
+m4_pushdef([with_arg], m4_tolower([$1]))
+
+m4_pushdef([description],
+ [m4_default([$5], [build with ]with_arg[ support])])
+
+m4_pushdef([def_arg], [m4_default([$6], [auto])])
+m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
+m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
+
+m4_case(def_arg,
+ [yes],[m4_pushdef([with_without], [--without-]with_arg)],
+ [m4_pushdef([with_without],[--with-]with_arg)])
+
+AC_ARG_WITH(with_arg,
+ AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
+ [AS_TR_SH([with_]with_arg)=def_arg])
+
+AS_CASE([$AS_TR_SH([with_]with_arg)],
+ [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
+ [auto],[PKG_CHECK_MODULES([$1],[$2],
+ [m4_n([def_action_if_found]) $3],
+ [m4_n([def_action_if_not_found]) $4])])
+
+m4_popdef([with_arg])
+m4_popdef([description])
+m4_popdef([def_arg])
+
+]) dnl PKG_WITH_MODULES
+
+# PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+# [DESCRIPTION], [DEFAULT])
+#
+# Convenience macro to trigger AM_CONDITIONAL after
+# PKG_WITH_MODULES check.
+#
+# HAVE_[VARIABLE-PREFIX] is exported as make variable.
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_HAVE_WITH_MODULES],
+[
+PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
+
+AM_CONDITIONAL([HAVE_][$1],
+ [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
+])
+
+# PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+# [DESCRIPTION], [DEFAULT])
+#
+# Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
+# PKG_WITH_MODULES check.
+#
+# HAVE_[VARIABLE-PREFIX] is exported as make and preprocessor variable.
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
+[
+PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
+
+AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
+ [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
+])
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/Makefile.am b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/Makefile.am
new file mode 100644
index 00000000000..3d225213993
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/Makefile.am
@@ -0,0 +1,146 @@
+# Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+#
+# This file is part of Gregorio.
+#
+# Gregorio 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.
+#
+# Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/gabc -I$(top_srcdir)/src/dump -I$(top_srcdir)/src/gregoriotex
+AM_CFLAGS =
+
+gregorio_CFLAGS = $(KPSE_CFLAGS)
+gregorio_LDADD = $(KPSE_LIBS)
+
+bin_PROGRAMS = gregorio
+gregorio_SOURCES = gregorio-utils.c characters.c characters.h \
+ messages.c messages.h struct.c struct.h \
+ unicode.c unicode.h sha1.c sha1.h support.c support.h \
+ config.h bool.h plugins.h utf8strings.h dump/dump.c \
+ gregoriotex/gregoriotex-write.c \
+ gregoriotex/gregoriotex-position.c \
+ gregoriotex/gregoriotex.h
+
+@MK@ifneq ($(wildcard ../.git),)
+@MK@ _tag_ = $(shell git describe --exact-match HEAD 2>/dev/null)
+@MK@ ifeq ($(_tag_),)
+@MK@ DEFS += -DBRANCH_VERSION='"$(shell git rev-parse --abbrev-ref HEAD)-$(shell git rev-parse --short HEAD)-$(shell git rev-list HEAD --count)"'
+@MK@ endif
+@MK@else
+@MK@ ifneq ($(wildcard ../.hg/git),)
+@MK@ _gitnode_ = $(shell hg log --template='{gitnode}' -r .)
+@MK@ _tag_ = $(shell git --git-dir=../.hg/git describe --exact-match $(_gitnode_) 2>/dev/null)
+@MK@ ifeq ($(_tag_),)
+@MK@ DEFS += -DBRANCH_VERSION='"$(shell cat ../.hg/bookmarks.current)-$(shell git --git-dir=../.hg/git rev-parse --short '$(_gitnode_)')-$(shell git --git-dir=../.hg/git rev-list '$(_gitnode_)' --count)"'
+@MK@ endif
+@MK@ endif
+@MK@endif
+
+if HAVE_RC
+# Windows resources (see windows/README.md)
+.rc.o:
+ $(RC) $(RCFLAGS) $< -o $@
+
+gregorio_SOURCES += ../windows/gregorio-resources.rc
+endif
+
+# gabc files
+gregorio_SOURCES += gabc/gabc-elements-determination.c gabc/gabc-write.c \
+ gabc/gabc-glyphs-determination.c gabc/gabc.h \
+ gabc/gabc-score-determination.h \
+ gabc/gabc-score-determination-y.h \
+ gabc/gabc-score-determination-y.c \
+ gabc/gabc-score-determination-l.h \
+ gabc/gabc-score-determination-l.c \
+ gabc/gabc-notes-determination-l.c \
+ vowel/vowel.h vowel/vowel.c vowel/vowel-rules.h \
+ vowel/vowel-rules-l.h vowel/vowel-rules-l.c \
+ vowel/vowel-rules-y.h vowel/vowel-rules-y.c
+
+EXTRA_DIST = encode_utf8strings.c utf8strings.h.in utf8strings.h \
+ gabc/gabc-notes-determination.l \
+ gabc/gabc-notes-determination-l.c \
+ gabc/gabc-score-determination.h \
+ gabc/gabc-score-determination.y \
+ gabc/gabc-score-determination-y.h \
+ gabc/gabc-score-determination-y.c \
+ gabc/gabc-score-determination.l \
+ gabc/gabc-score-determination-l.h \
+ gabc/gabc-score-determination-l.c \
+ vowel/vowel-rules.l \
+ vowel/vowel-rules-l.h vowel/vowel-rules-l.c \
+ vowel/vowel-rules.y \
+ vowel/vowel-rules-y.h vowel/vowel-rules-y.c
+
+gabc/gabc-score-determination-y.c: gabc/gabc-score-determination.y
+ $(YACC) -d -p "gabc_score_determination_" -o $@ $<
+gabc/gabc-score-determination-y.h: gabc/gabc-score-determination-y.c
+ ## Recover from the removal of gabc/gabc-score-determination-y.h, see
+ ## https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html
+ @if test -f $@; then :; else \
+ rm -f gabc/gabc-score-determination-y.c; \
+ $(MAKE) $(AM_MAKEFLAGS) gabc/gabc-score-determination-y.c; \
+ fi
+
+gabc/gabc-score-determination-l.c: gabc/gabc-score-determination.l
+ $(LEX) -o $@ --header-file=gabc/gabc-score-determination-l.h $<
+gabc/gabc-score-determination-l.h: gabc/gabc-score-determination-l.c
+ ## Recover from the removal of gabc/gabc-score-determination-l.h, see
+ ## https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html
+ @if test -f $@; then :; else \
+ rm -f gabc/gabc-score-determination-l.c; \
+ $(MAKE) $(AM_MAKEFLAGS) gabc/gabc-score-determination-l.c; \
+ fi
+
+gabc/gabc-notes-determination-l.c: gabc/gabc-notes-determination.l
+ $(LEX) -o $@ $<
+
+vowel/vowel-rules-y.c: vowel/vowel-rules.y
+ $(YACC) -d -o $@ $<
+vowel/vowel-rules-y.h: vowel/vowel-rules-y.c
+ ## Recover from the removal of vowel/vowel-rules-y.h, see
+ ## https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html
+ @if test -f $@; then :; else \
+ rm -f vowel/vowel-rules-y.c; \
+ $(MAKE) $(AM_MAKEFLAGS) vowel/vowel-rules-y.c; \
+ fi
+
+vowel/vowel-rules-l.c: vowel/vowel-rules.l
+ $(LEX) -o $@ --header-file=vowel/vowel-rules-l.h $<
+vowel/vowel-rules-l.h: vowel/vowel-rules-l.c
+ ## Recover from the removal of vowel/vowel-rules-l.h, see
+ ## https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html
+ @if test -f $@; then :; else \
+ rm -f vowel/vowel-rules-l.c; \
+ $(MAKE) $(AM_MAKEFLAGS) vowel/vowel-rules-l.c; \
+ fi
+
+utf8strings.h: utf8strings.h.in
+ $(MAKE) $(AM_MAKEFLAGS) encode_utf8strings${EXEEXT}
+ ./encode_utf8strings${EXEEXT} $< $@
+
+encode_utf8strings${EXEEXT}: encode_utf8strings.c
+ $(CC) -o $@ $<
+
+BUILT_SOURCES = utf8strings.h \
+ gabc/gabc-notes-determination-l.c \
+ gabc/gabc-score-determination-l.c \
+ gabc/gabc-score-determination-l.h \
+ gabc/gabc-score-determination-y.c \
+ gabc/gabc-score-determination-y.h \
+ vowel/vowel-rules-l.c \
+ vowel/vowel-rules-l.h \
+ vowel/vowel-rules-y.c \
+ vowel/vowel-rules-y.h
+
+CLEANFILES = encode_utf8strings${EXEEXT}
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/bool.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/bool.h
new file mode 100644
index 00000000000..4ff2bc1386f
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/bool.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef BOOL_H
+#define BOOL_H
+
+#ifdef HAVE__BOOL
+#include <stdbool.h>
+#else
+typedef unsigned int bool;
+#define true 1
+#define false 0
+#endif
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.c
new file mode 100644
index 00000000000..26cf20637af
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.c
@@ -0,0 +1,1242 @@
+/*
+ * Copyright (C) 2008-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @file
+ * @brief This file contains almost all the gregorio_character manipulation things.
+ *
+ * @warning The code is very spaghetti, but I don't really think I can do it another way with the chosen representation of styles, and the fact that everything must be xml-compliant and tex-compliant...
+ * So this file is basically very hard to maintain. Moreover, it has not been very well coded, so it is even harder to maintain...
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <sys/stat.h>
+#ifdef USE_KPSE
+ #include <kpathsea/kpathsea.h>
+#endif
+#include "bool.h"
+#include "struct.h"
+#include "unicode.h"
+#include "characters.h"
+#include "messages.h"
+#include "utf8strings.h"
+#include "vowel/vowel.h"
+
+#ifdef _WIN32
+#ifndef PATH_MAX
+#define PATH_MAX _MAX_PATH
+#endif
+#endif
+
+#define VOWEL_FILE "gregorio-vowels.dat"
+
+#ifndef USE_KPSE
+static __inline void rtrim(char *buf)
+{
+ char *p;
+ for (p = buf + strlen(buf) - 1; p >= buf && isspace(*p); --p) {
+ *p = '\0';
+ }
+}
+#endif
+
+static bool read_vowel_rules(char *const lang) {
+ char *language = lang;
+ rulefile_parse_status status = RFPS_NOT_FOUND;
+ char **filenames, *filename, **p;
+ const char *description;
+ int tries;
+
+#ifdef USE_KPSE
+ filenames = kpse_find_file_generic(VOWEL_FILE, kpse_tex_format, true, true);
+ if (!filenames) {
+ if (strcmp(language, "Latin") != 0) {
+ gregorio_messagef("read_patterns", VERBOSITY_WARNING, 0,
+ _("kpse_find_file_generic cannot find %s"), VOWEL_FILE);
+ }
+ return false;
+ }
+#else
+ FILE *file;
+ char buf[PATH_MAX];
+ size_t capacity = 16, size = 0;
+
+ if (!(filenames = malloc(capacity * sizeof(char *)))) {
+ gregorio_messagef("read_patterns", VERBOSITY_FATAL, 0,
+ _("unable to allocate memory"));
+ return false;
+ }
+
+ file = popen("kpsewhich " VOWEL_FILE, "r");
+ if (!file) {
+ gregorio_messagef("read_patterns", VERBOSITY_WARNING, 0,
+ _("unable to run kpsewhich %s: %s"), VOWEL_FILE,
+ strerror(errno));
+ return false;
+ }
+ while (!feof(file) && !ferror(file) && fgets(buf, PATH_MAX, file)) {
+ rtrim(buf);
+ if (strlen(buf) > 0) {
+ filenames[size++] = strdup(buf);
+ if (size >= capacity) {
+ capacity <<= 1;
+ if (!(filenames = realloc(filenames,
+ capacity * sizeof(char *)))) {
+ gregorio_messagef("read_patterns", VERBOSITY_FATAL, 0,
+ _("unable to allocate memory"));
+ return false;
+ }
+ }
+ } else {
+ gregorio_messagef("read_patterns", VERBOSITY_WARNING, 0,
+ _("kpsewhich returned bad value for %s"), VOWEL_FILE);
+ }
+ }
+ filenames[size] = NULL;
+ pclose(file);
+#endif
+
+ gregorio_vowel_tables_init();
+ /* only need to try twice; if it's not resolved by then, there is an alias
+ * loop */
+ for (tries = 0; tries < 2; ++tries) {
+ for (p = filenames; status != RFPS_FOUND && (filename = *p); ++p) {
+ /* read and parse the file */
+ gregorio_messagef("read_rules", VERBOSITY_INFO, 0,
+ _("Looking for %s in %s"), language, filename);
+ gregorio_vowel_tables_load(filename, &language, &status);
+ switch (status) {
+ case RFPS_FOUND:
+ description = "Found";
+ break;
+ case RFPS_ALIASED:
+ description = "Aliased to";
+ break;
+ default:
+ description = "Could not find";
+ break;
+ }
+ gregorio_messagef("read_rules", VERBOSITY_INFO, 0, _("%s %s in %s"),
+ description, language, filename);
+ }
+ if (status != RFPS_ALIASED) {
+ /* if it's not aliased, there's no reason to scan again */
+ break;
+ }
+ }
+ if (status == RFPS_ALIASED) {
+ gregorio_messagef("read_rules", VERBOSITY_WARNING, 0,
+ _("Unable to resolve alias for %s"), lang);
+ }
+
+ /* free the allocated memory */
+ for (p = filenames; *p; ++p) {
+ free(*p);
+ }
+ free(filenames);
+ if (language != lang) {
+ free(language);
+ }
+
+ return status == RFPS_FOUND;
+}
+
+void gregorio_set_centering_language(char *const language)
+{
+ if (!read_vowel_rules(language)) {
+ if (strcmp(language, "Latin") != 0) {
+ gregorio_messagef("gregorio_set_centering_language",
+ VERBOSITY_WARNING, 0, _("unable to read vowel files for "
+ "%s; defaulting to Latin rules"), language);
+ }
+
+ gregorio_vowel_tables_init();
+ gregorio_vowel_table_add(DEFAULT_VOWELS);
+ gregorio_prefix_table_add("i");
+ gregorio_prefix_table_add("I");
+ gregorio_prefix_table_add("u");
+ gregorio_prefix_table_add("U");
+ }
+}
+
+static __inline gregorio_character *skip_verbatim_or_special(
+ gregorio_character *ch)
+{
+ /* skip past verbatim and special characters */
+ if (ch->cos.s.type == ST_T_BEGIN && (ch->cos.s.style == ST_VERBATIM
+ || ch->cos.s.style == ST_SPECIAL_CHAR)) {
+ if (ch->next_character) {
+ ch = ch->next_character;
+ }
+ while (ch->next_character && ch->is_character) {
+ ch = ch->next_character;
+ }
+ }
+ return ch;
+}
+
+static void determine_center(gregorio_character *character, int *start,
+ int *end) {
+ int count;
+ grewchar *subject;
+ gregorio_character *ch;
+
+ *start = *end = -1;
+
+ for (count = 0, ch = character; ch; ch = ch->next_character) {
+ if (ch->is_character) {
+ ++count;
+ } else {
+ ch = skip_verbatim_or_special(ch);
+ }
+ }
+ if (count == 0) {
+ return;
+ }
+ subject = (grewchar *)malloc((count + 1) * sizeof(grewchar));
+ for (count = 0, ch = character; ch; ch = ch->next_character) {
+ if (ch->is_character) {
+ subject[count ++] = ch->cos.character;
+ } else {
+ ch = skip_verbatim_or_special(ch);
+ }
+ }
+ subject[count] = (grewchar)0;
+
+ gregorio_find_vowel_group(subject, start, end);
+
+ free(subject);
+}
+
+/*
+ * inline function that will be used for verbatim and special-characters in the
+ *
+ * next function, it calls function with a grewchar * which is the verbatim or
+ * special-character. It places current_character to the character next to the
+ * end of the verbatim or special_char charachters.
+ */
+static __inline void verb_or_sp(gregorio_character **ptr_character,
+ grestyle_style style, FILE *f, void (*function) (FILE *, grewchar *))
+{
+ int i, j;
+ grewchar *text;
+ gregorio_character *current_character;
+ gregorio_character *begin_character;
+
+ i = 0;
+ j = 0;
+
+ current_character = (*ptr_character)->next_character;
+ begin_character = current_character;
+ while (current_character) {
+ if (current_character->cos.s.type == ST_T_END
+ && current_character->cos.s.style == style) {
+ break;
+ } else {
+ if (current_character->is_character) {
+ i++;
+ }
+ current_character = current_character->next_character;
+ }
+ }
+ if (i == 0) {
+ ptr_character = &current_character;
+ return;
+ }
+ text = (grewchar *) malloc((i + 1) * sizeof(grewchar));
+ current_character = begin_character;
+ while (j < i) {
+ if (current_character->is_character) {
+ text[j] = current_character->cos.character;
+ current_character = current_character->next_character;
+ j++;
+ } else {
+ current_character = current_character->next_character;
+ }
+ }
+ text[i] = 0;
+ function(f, text);
+ free(text);
+
+ *ptr_character = current_character;
+}
+
+/**
+ * This function is made to simplify the output modules : they just have to
+ * declare some simple functions (what to do when meeting a beginning of style,
+ * a character, etc.) and to call this function with pointer to these
+ * functions, and that will automatically write the good ouput. This function
+ * does not test at all the gregorio_character list, if it is wrong, then the
+ * ouput will be wrong. It is very simple to understand, even if it is a bit
+ * long.
+ *
+ * @warning The difficulty comes when we have to write the first syllable text,
+ * without the first letter.
+ * The behaviour can have some bugs in this case if the first syllable has some
+ * complex styles. It would be a bit stupid to do such a thing, but users are
+ * usually very creative when it comes to inventing twisted things...
+ */
+void gregorio_write_text(bool skip_initial,
+ gregorio_character *current_character,
+ FILE *f, void (*printverb) (FILE *, grewchar *),
+ void (*printchar) (FILE *, grewchar),
+ void (*begin) (FILE *, grestyle_style),
+ void (*end) (FILE *, grestyle_style),
+ void (*printspchar) (FILE *, grewchar *))
+{
+ if (current_character == NULL) {
+ return;
+ }
+ while (current_character) {
+ if (current_character->is_character) {
+ printchar(f, current_character->cos.character);
+ } else {
+ if (current_character->cos.s.type == ST_T_BEGIN) {
+ switch (current_character->cos.s.style) {
+ case ST_VERBATIM:
+ verb_or_sp(&current_character, ST_VERBATIM, f, printverb);
+ break;
+ case ST_SPECIAL_CHAR:
+ verb_or_sp(&current_character, ST_SPECIAL_CHAR, f,
+ printspchar);
+ break;
+ case ST_INITIAL:
+ if (skip_initial) {
+ while (current_character) {
+ if (!current_character->is_character
+ && current_character->cos.s.type == ST_T_END
+ && current_character->cos.s.style ==
+ ST_INITIAL) {
+ break;
+ }
+ current_character =
+ current_character->next_character;
+ }
+ } else {
+ begin(f, ST_INITIAL);
+ }
+ break;
+ default:
+ begin(f, current_character->cos.s.style);
+ break;
+ }
+ } else { /* ST_T_END */
+ end(f, current_character->cos.s.style);
+ }
+ }
+
+ current_character = current_character->next_character;
+ }
+}
+
+/* the default behaviour is to write only the initial, that is to say things
+ * between the styles ST_INITIAL */
+void gregorio_write_initial(gregorio_character *current_character,
+ FILE *f, void (*printverb) (FILE *, grewchar *),
+ void (*printchar) (FILE *, grewchar),
+ void (*begin) (FILE *, grestyle_style),
+ void (*end) (FILE *, grestyle_style),
+ void (*printspchar) (FILE *, grewchar *))
+{
+ /* we loop until we see the beginning of the initial style */
+ gregorio_go_to_first_character(&current_character);
+ while (current_character) {
+ if (!current_character->is_character
+ && current_character->cos.s.type == ST_T_BEGIN
+ && current_character->cos.s.style == ST_INITIAL) {
+ current_character = current_character->next_character;
+ break;
+ }
+
+ current_character = current_character->next_character;
+ }
+ /* then we loop until we see the end of the initial style, but we print */
+ while (current_character) {
+ if (current_character->is_character) {
+ printchar(f, current_character->cos.character);
+ } else {
+ if (current_character->cos.s.type == ST_T_BEGIN) {
+ switch (current_character->cos.s.style) {
+ case ST_VERBATIM:
+ verb_or_sp(&current_character, ST_VERBATIM, f, printverb);
+ break;
+ case ST_SPECIAL_CHAR:
+ verb_or_sp(&current_character, ST_SPECIAL_CHAR, f,
+ printspchar);
+ break;
+ default:
+ begin(f, current_character->cos.s.style);
+ break;
+ }
+ } else { /* ST_T_END */
+ if (current_character->cos.s.style == ST_INITIAL) {
+ return;
+ } else {
+ end(f, current_character->cos.s.style);
+ }
+ }
+ }
+ current_character = current_character->next_character;
+ }
+}
+
+/*
+ *
+ * A very simple function that returns the first text of a score, or the null
+ * character if there is no such thing.
+ *
+ */
+
+gregorio_character *gregorio_first_text(gregorio_score *score)
+{
+ gregorio_syllable *current_syllable;
+ if (!score || !score->first_syllable) {
+ gregorio_message(_("unable to find the first letter of the score"),
+ "gregorio_first_text", VERBOSITY_ERROR, 0);
+ return NULL;
+ }
+ current_syllable = score->first_syllable;
+ while (current_syllable) {
+ if (current_syllable->text) {
+ return current_syllable->text;
+ }
+ current_syllable = current_syllable->next_syllable;
+ }
+
+ gregorio_message(_("unable to find the first letter of the score"),
+ "gregorio_first_text", VERBOSITY_ERROR, 0);
+ return NULL;
+}
+
+/*
+ * Here starts the code of the handling of text and styles.
+ *
+ * This part is not the easiest, in fact is is the most complicated. The reason
+ * is that I want to make something coherent in memory (easy to interprete),
+ * and to let the user type whatever he wants. This part was originally written
+ * for gabc, that's why it's always talking about it. But it could as well be
+ * used by other read plugins, to put things in order.
+ *
+ * Basically all the following lines of code are made for the last function,
+ * that will take a "user-written" gregorio_character list into a xml-compliant
+ * and tex-compliant list. It's more complicated than it seems...
+ *
+ * Functionalities: For example if the user types tt<i>ttt<b>ttt</i>tt I want
+ * it to be represented as tt<i>ttt<b>ttt</b></i><b>tt</b>. The fabulous thing
+ * is that it is xml-compliant. This part also determines the middle, for
+ * example pot will be interpreted as p{o}t. When I did that I also thought
+ * about TeX styles that needed things like {p}{o}{t}, so when the user types
+ * <i>pot</i>, it is interpreted as <i>p</i>{<i>o</i>}<i>t</i>.
+ *
+ * Internal structure: To do so we have a structure, det_style, that will help
+ * us : it is a stack (double chained list) of the styles that we have seen
+ * until now. When we encounter a <i>, we push the i style on the stack. If we
+ * encounter a </i> we suppress the i style from the stack. Let's take a more
+ * complex example: if we encounter <i><b></i>, the stack will be first null,
+ * then i then bi, and there we want to end i, but it is not the first style of
+ * the stack, so we close all the styles that we encounter before we encounter
+ * i (remember, this is for xml-compliance), so we insert a </b> before the
+ * </i>. But that's not all, we also write a <b> after the </i>, so that the b
+ * style continues. There our stack is just b. For center, we just close all
+ * the styles in the stack, insert a { and reopen all the styles in the stack.
+ *
+ * The structure used for character, styles, etc. is described in
+ * include/struct.h
+ *
+ * The functionment in this file is quite simple : we add all the characters
+ * that we see, even if they are incoherent, in the gregorio_character list,
+ * and then we call a very complex function that will build a stack of the
+ * style, determine the middle, make all xml-compliant, mow the lawn, etc.
+ *
+ * This code is *really* spaghetti, but I think it's a necessary pain.
+ *
+ */
+
+/*
+ * The push function pushes a style in the stack, and updates first_style to
+ * this element.
+ */
+
+static void gregorio_style_push(det_style **current_style, unsigned char style)
+{
+ det_style *element;
+ if (!current_style) {
+ return;
+ }
+ element = (det_style *) malloc(sizeof(det_style));
+ element->style = style;
+ element->previous_style = NULL;
+ element->next_style = (*current_style);
+ if (*current_style) {
+ (*current_style)->previous_style = element;
+ }
+ (*current_style) = element;
+}
+
+/*
+ * Pop deletes an style in the stack (the style to delete is the parameter)
+ */
+
+static void gregorio_style_pop(det_style **first_style, det_style *element)
+{
+ if (!element || !first_style || !*first_style) {
+ return;
+ }
+ if (element->previous_style) {
+ element->previous_style->next_style = element->next_style;
+ } else {
+ if (element->next_style) {
+ element->next_style->previous_style = element->previous_style;
+ (*first_style) = element->next_style;
+ } else {
+ (*first_style) = NULL;
+ }
+ }
+ free(element);
+}
+
+/*
+ * free_styles just free the stack. You may notice that it will never be used
+ * in a normal functionment. But we never know...
+ */
+
+static void gregorio_free_styles(det_style **first_style)
+{
+ det_style *current_style;
+ if (!first_style) {
+ return;
+ }
+ current_style = (*first_style);
+ while (current_style) {
+ current_style = current_style->next_style;
+ free((*first_style));
+ (*first_style) = current_style;
+ }
+}
+
+
+/*
+ *
+ * This function inserts a style before current_character, updating the double
+ * chained list.
+ *
+ */
+
+static void gregorio_insert_style_before(unsigned char type,
+ unsigned char style, gregorio_character *current_character)
+{
+ gregorio_character *element =
+ (gregorio_character *) malloc(sizeof(gregorio_character));
+ element->is_character = 0;
+ element->cos.s.type = type;
+ element->cos.s.style = style;
+ element->next_character = current_character;
+ if (current_character->previous_character) {
+ current_character->previous_character->next_character = element;
+ }
+ element->previous_character = current_character->previous_character;
+ current_character->previous_character = element;
+}
+
+/*
+ *
+ * This function puts a style after current_character, and updates
+ * current_character to the gregorio_character it created. It updates the
+ * double chained list. It does not touche to the det_styles list.
+ *
+ */
+
+static void gregorio_insert_style_after(unsigned char type, unsigned char style,
+ gregorio_character **current_character)
+{
+ gregorio_character *element =
+ (gregorio_character *) malloc(sizeof(gregorio_character));
+ element->is_character = 0;
+ element->cos.s.type = type;
+ element->cos.s.style = style;
+ element->next_character = (*current_character)->next_character;
+ if ((*current_character)->next_character) {
+ (*current_character)->next_character->previous_character = element;
+ }
+ element->previous_character = (*current_character);
+ (*current_character)->next_character = element;
+ (*current_character) = element;
+}
+
+#if 0
+static void gregorio_insert_char_after(grewchar c,
+ gregorio_character **current_character)
+{
+ gregorio_character *element =
+ (gregorio_character *) malloc(sizeof(gregorio_character));
+ element->is_character = 1;
+ element->cos.character = c;
+ element->next_character = (*current_character)->next_character;
+ if ((*current_character)->next_character) {
+ (*current_character)->next_character->previous_character = element;
+ }
+ element->previous_character = (*current_character);
+ (*current_character)->next_character = element;
+ (*current_character) = element;
+}
+#endif
+
+/*
+ *
+ * This function suppresses the current character, updates the double chained
+ * list, and updates current_character to the character after, if there is one.
+ *
+ */
+
+static void gregorio_suppress_current_character(
+ gregorio_character **current_character)
+{
+ gregorio_character *thischaracter;
+ if (!current_character || !*current_character) {
+ return;
+ }
+ thischaracter = *current_character;
+ if ((*current_character)->previous_character) {
+ (*current_character)->previous_character->next_character =
+ (*current_character)->next_character;
+ }
+ if ((*current_character)->next_character) {
+ (*current_character)->next_character->previous_character =
+ (*current_character)->previous_character;
+ }
+ (*current_character) = (*current_character)->next_character;
+ free(thischaracter);
+}
+
+/*
+ *
+ * This function suppresses the corresponding character, updates the double
+ * chained list, but does not touch to current_character.
+ *
+ */
+
+static void gregorio_suppress_this_character(gregorio_character *to_suppress)
+{
+ if (!to_suppress) {
+ return;
+ }
+ if (to_suppress->previous_character) {
+ to_suppress->previous_character->next_character =
+ to_suppress->next_character;
+ }
+ if (to_suppress->next_character) {
+ to_suppress->next_character->previous_character =
+ to_suppress->previous_character;
+ }
+ free(to_suppress);
+}
+
+/*
+ *
+ * Then start the inline functions for the big function. the first one is the
+ * function we call when we close a style. The magic thing is that is will
+ * prevent things like a<i></i>{<i>b</b>: when the user types a<i>b</i>, if the
+ * middle is between a and b (...), it will interpret it as a{<i>b</i>.
+ *
+ */
+
+static __inline void close_style(gregorio_character *current_character,
+ det_style *current_style)
+{
+ if (!current_character->previous_character->is_character
+ && current_character->previous_character->cos.s.style ==
+ current_style->style) {
+ /*
+ * we suppose that there is a previous_character, because there is a
+ * current_style
+ */
+ gregorio_suppress_this_character(current_character->previous_character);
+ } else {
+ gregorio_insert_style_before(ST_T_END, current_style->style,
+ current_character);
+ }
+}
+
+/*
+ *
+ * next the function called when we have determined that we must end the center
+ * here : it closes all styles, adds a } and then reopens all styles.
+ *
+ */
+
+/* type is ST_CENTER or ST_FORCED_CENTER */
+static __inline void end_center(grestyle_style type,
+ gregorio_character *current_character, det_style **ptr_style)
+{
+ det_style *current_style;
+ current_style = *ptr_style;
+
+ while (current_style) {
+ close_style(current_character, current_style);
+ if (current_style->next_style) {
+ current_style = current_style->next_style;
+ } else {
+ break;
+ }
+ }
+ gregorio_insert_style_before(ST_T_END, type, current_character);
+ while (current_style) {
+ gregorio_insert_style_before(ST_T_BEGIN, current_style->style,
+ current_character);
+ if (current_style->previous_style) {
+ current_style = current_style->previous_style;
+ } else {
+ break;
+ }
+ }
+
+ *ptr_style = current_style;
+}
+
+/*
+ * about the same, but adding a {
+ */
+
+static __inline void begin_center(grestyle_style type,
+ gregorio_character *current_character, det_style **ptr_style)
+{
+ det_style *current_style;
+ current_style = *ptr_style;
+
+ while (current_style) {
+ close_style(current_character, current_style);
+ if (current_style->next_style) {
+ current_style = current_style->next_style;
+ } else {
+ break;
+ }
+ }
+ gregorio_insert_style_before(ST_T_BEGIN, type, current_character);
+ while (current_style) {
+ gregorio_insert_style_before(ST_T_BEGIN, current_style->style,
+ current_character);
+ if (current_style->previous_style) {
+ current_style = current_style->previous_style;
+ } else {
+ break;
+ }
+ }
+
+ *ptr_style = current_style;
+}
+
+/*
+ *
+ * the macro called when we have ended the determination of the current
+ * character. It makes current_character point to the last character, not to
+ * null at the end of the determination.
+ *
+ */
+
+#define end_c() if (_end_c(&current_character)) continue; else break;
+static __inline bool _end_c(gregorio_character **ptr_character)
+{
+ if ((*ptr_character)->next_character) {
+ *ptr_character = (*ptr_character)->next_character;
+ /* continue */
+ return true;
+ } else {
+ /* break */
+ return false;
+ }
+}
+
+/*
+ *
+ * basically the same except that we suppress the current_character
+ *
+ */
+
+#define suppress_char_and_end_c() if (_suppress_char_and_end_c(&current_character)) continue; else break;
+static __inline bool _suppress_char_and_end_c(
+ gregorio_character **ptr_character)
+{
+ if ((*ptr_character)->next_character) {
+ *ptr_character = (*ptr_character)->next_character;
+ gregorio_suppress_this_character((*ptr_character)->previous_character);
+ /* continue */
+ return true;
+ } else {
+ if ((*ptr_character)->previous_character) {
+ (*ptr_character) = (*ptr_character)->previous_character;
+ gregorio_suppress_this_character((*ptr_character)->next_character);
+ } else {
+ gregorio_suppress_this_character(*ptr_character);
+ *ptr_character = NULL;
+ }
+ /* break */
+ return false;
+ }
+}
+
+static bool gregorio_go_to_end_initial(gregorio_character **param_character)
+{
+ bool has_initial = false;
+ gregorio_character *current_character = *param_character;
+ if (!current_character) {
+ return false;
+ }
+ gregorio_go_to_first_character(&current_character);
+ /* skip past any initial */
+ if (!current_character->is_character
+ && current_character->cos.s.type == ST_T_BEGIN
+ && current_character->cos.s.style == ST_INITIAL) {
+ has_initial = true;
+ while (current_character) {
+ if (!current_character->is_character
+ && current_character->cos.s.type == ST_T_END
+ && current_character->cos.s.style == ST_INITIAL) {
+ break;
+ }
+ current_character = current_character->next_character;
+ }
+ }
+ (*param_character) = current_character;
+ return has_initial;
+}
+
+/*
+ * THE big function. Very long, using a lot of long macros, etc. I hope you
+ * really want to understand it, 'cause it won't be easy.
+ *
+ * current character is a pointer to a gregorio_character. The
+ * gregorio_character double-chained list it is in will be totally reorganized
+ * so that it is xml compliant, and the function will update it to the first
+ * character of this brand new list.
+ *
+ * center_is_determined has the values present in characters.h.
+ *
+ * Another difficulty is the fact that we must consider characters in verbatim
+ * and special character styles like only one block, we can't say the center is
+ * in the middle of a verbatim block.
+ */
+
+void gregorio_rebuild_characters(gregorio_character **param_character,
+ gregorio_center_determination center_is_determined, bool skip_initial)
+{
+ /* a det_style, to walk through the list */
+ det_style *current_style = NULL;
+ /* the current_character */
+ gregorio_character *current_character = *param_character;
+ /* a char that we will use in a very particular case */
+ grestyle_style this_style;
+ det_style *first_style = NULL;
+ /* determining the type of centering (forced or not) */
+ grestyle_style center_type = ST_NO_STYLE;
+ int start = -1, end = -1, index = -1;
+ /* so, here we start: we go to the first_character */
+ if (gregorio_go_to_end_initial(&current_character)) {
+ if (!current_character->next_character) {
+ /* nothing else to rebuild, but the initial needs to be ST_CENTER */
+ gregorio_insert_style_after(ST_T_END, ST_CENTER,
+ &current_character);
+ gregorio_go_to_first_character(&current_character);
+ gregorio_insert_style_before(ST_T_BEGIN, ST_CENTER,
+ current_character);
+ gregorio_go_to_first_character(&current_character);
+ (*param_character) = current_character;
+ return;
+ }
+ if (skip_initial) {
+ /* move to the character after the initial */
+ current_character = current_character->next_character;
+ } else {
+ gregorio_go_to_first_character(&current_character);
+ }
+ }
+ /* first we see if there is already a center determined */
+ if (center_is_determined == 0) {
+ center_type = ST_CENTER;
+ determine_center(current_character, &start, &end);
+ } else {
+ center_type = ST_FORCED_CENTER;
+ }
+ /* we loop until there isn't any character */
+ while (current_character) {
+ /* the first part of the function deals with real characters (not
+ * styles) */
+ if (current_character->is_character) {
+ ++index;
+ /* the firstcase is if the user has'nt determined the middle, and
+ * we have only seen vowels so far (else center_is_determined
+ * would be DETERMINING_MIDDLE). The current_character is the
+ * first vowel, so we start the center here. */
+ if (!center_is_determined && index == start) {
+ begin_center(center_type, current_character, &current_style);
+ center_is_determined = CENTER_DETERMINING_MIDDLE;
+ end_c();
+ }
+ /* the case where the user has not determined the middle and we
+ * are in the middle section of the syllable, but there we
+ * encounter something that is not a vowel, so the center ends
+ * there. */
+ if (center_is_determined == CENTER_DETERMINING_MIDDLE
+ && index == end) {
+ end_center(center_type, current_character, &current_style);
+ center_is_determined = CENTER_FULLY_DETERMINED;
+ }
+ /* in the case where it is just a normal character... we simply
+ * pass. */
+ end_c();
+ }
+ /* there starts the second part of the function that deals with the
+ * styles characters */
+ if (current_character->cos.s.type == ST_T_BEGIN
+ && current_character->cos.s.style != ST_CENTER
+ && current_character->cos.s.style != ST_FORCED_CENTER) {
+ /* first, if it it the beginning of a style, which is not center.
+ * We check if the style is not already in the stack. If it is the
+ * case, we suppress the character and pass (with the good macro) */
+ while (current_style
+ && current_style->style != current_character->cos.s.style) {
+ current_style = current_style->next_style;
+ }
+ if (current_style) {
+ current_style = first_style;
+ suppress_char_and_end_c();
+ }
+ /* if we are determining the end of the middle and we have a
+ * VERBATIM or SPECIAL_CHAR style, we end the center
+ * determination */
+ if ((current_character->cos.s.style == ST_VERBATIM
+ || current_character->cos.s.style ==
+ ST_SPECIAL_CHAR)
+ && center_is_determined == CENTER_DETERMINING_MIDDLE) {
+ end_center(center_type, current_character, &current_style);
+ center_is_determined = CENTER_FULLY_DETERMINED;
+ }
+ /* if it is something to add then we just push the style in the
+ * stack and continue. */
+ gregorio_style_push(&first_style, current_character->cos.s.style);
+ current_style = first_style;
+ /* Here we pass all the characters after a verbatim (or special
+ * char) beginning, until we find a style (begin or end) */
+ if (current_character->cos.s.style == ST_VERBATIM
+ || current_character->cos.s.style == ST_SPECIAL_CHAR) {
+ if (current_character->next_character) {
+ current_character = current_character->next_character;
+ }
+ while (current_character->next_character
+ && current_character->is_character) {
+ current_character = current_character->next_character;
+ }
+ } else {
+ end_c();
+ }
+ }
+ /* if it is a beginning of a center, we call the good macro and end. */
+ if (current_character->cos.s.type == ST_T_BEGIN
+ && (current_character->cos.s.style == ST_CENTER
+ || current_character->cos.s.style ==
+ ST_FORCED_CENTER)) {
+ if (current_character->cos.s.style == ST_CENTER) {
+ center_type = ST_CENTER;
+ } else {
+ center_type = ST_FORCED_CENTER;
+ }
+ if (center_is_determined) {
+ end_c();
+ }
+ /* center_is_determined = DETERMINING_MIDDLE; */
+ /* TODO: not really sure, but shouldn't be there */
+ begin_center(center_type, current_character, &current_style);
+ end_c();
+ }
+ if (current_character->cos.s.type == ST_T_END
+ && current_character->cos.s.style != ST_CENTER
+ && current_character->cos.s.style != ST_FORCED_CENTER) {
+ /* the case of the end of a style (the most complex). First, we
+ * have to see if the style is in the stack. If there is no stack,
+ * we just suppress and continue. */
+ if (!current_style) {
+ suppress_char_and_end_c();
+ }
+ /* so, we look if it is in the stack. If it is we put
+ * current_style to the style just before the style corresponding
+ * to the character that we are trating (still there ?) */
+ if (current_style->style != current_character->cos.s.style) {
+ while (current_style->next_style
+ && current_style->next_style->style !=
+ current_character->cos.s.style) {
+ current_style = current_style->next_style;
+ }
+ if (current_style->next_style) {
+ current_style = first_style;
+ while (current_style) {
+ /* if there are styles before in the stack, we close
+ * them */
+ gregorio_insert_style_before(ST_T_END,
+ current_style->style, current_character);
+ current_style = current_style->previous_style;
+ }
+ current_style = first_style;
+ this_style = current_character->cos.s.style;
+ /* and then we reopen them */
+ while (current_style && current_style->style != this_style) {
+ gregorio_insert_style_after(ST_T_BEGIN,
+ current_style->style, &current_character);
+ current_style = current_style->next_style;
+ }
+ /* we delete the style in the stack */
+ gregorio_style_pop(&first_style, current_style);
+ current_style = first_style;
+ } else {
+ suppress_char_and_end_c();
+ }
+ } else {
+ gregorio_style_pop(&first_style, current_style);
+ current_style = first_style;
+ end_c();
+ }
+ } else { /* ST_T_END && ST_CENTER */
+ /* a quite simple case, we just call the good macro. */
+ if (!center_is_determined) {
+ suppress_char_and_end_c();
+ }
+ }
+ end_c();
+ }
+ if (!current_character) {
+ return;
+ }
+ /* we terminate all the styles that are still in the stack */
+ while (current_style) {
+ gregorio_insert_style_after(ST_T_END, current_style->style,
+ &current_character);
+ current_style = current_style->next_style;
+ }
+ /* current_character is at the end of the list now, so if we havn't closed
+ * the center, we do it at the end. */
+ if (center_is_determined != CENTER_FULLY_DETERMINED) {
+ gregorio_insert_style_after(ST_T_END, center_type, &current_character);
+ }
+ /* these three lines are for the case where the user didn't tell anything
+ * about the middle and there aren't any vowel in the syllable, so we
+ * begin the center before the first character (you can notice that there
+ * is no problem of style). */
+ if (!center_is_determined) {
+ if (skip_initial && gregorio_go_to_end_initial(&current_character)) {
+ current_character = current_character->next_character;
+ } else {
+ gregorio_go_to_first_character(&current_character);
+ }
+ gregorio_insert_style_before(ST_T_BEGIN, ST_CENTER, current_character);
+ }
+ /* well.. you're quite brave if you reach this comment. */
+ gregorio_go_to_first_character(&current_character);
+ (*param_character) = current_character;
+ gregorio_free_styles(&first_style);
+}
+
+/**
+ * @brief This function will determine the behaviour of gregorio when it comes to the recognition of the initial.
+ *
+ * Basically it will take a gregorio_character list and return the same list, but with a style added : ST_INITIAL. This style will incidate the initial. The center will be placed at the second letter, unless there is a FORCED_CENTER somewhere.
+ * Finally all will be xml-compliant and tex-compliant when we call gregorio_rebuild_characters.
+ *
+ * If we note <> for the initial and {} for the center, here is what we want:
+ *
+ * @li \verbatim Po -> <P>{o} \endverbatim
+ * @li \verbatim {A}b -> <>{A}b \endverbatim
+ * @li \verbatim {}a -> <>{}a \endverbatim
+ * @li \verbatim Glo -> <G>{l}o \endverbatim
+ * @li \verbatim Gl{o} -> <G>l{o} \endverbatim
+ *
+ * @param param_character is a pointer to the (pointer to the) first character, it will be modified so that it points to the new first character.
+ */
+void gregorio_rebuild_first_syllable(gregorio_character **param_character,
+ bool separate_initial)
+{
+ /* the current_character */
+ gregorio_character *current_character = *param_character;
+ gregorio_character *first_character;
+ gregorio_character *start_of_special;
+ /* so, here we start: we go to the first_character */
+ gregorio_go_to_first_character(&current_character);
+ /* first we look at the styles, to see if there is a FORCED_CENTER
+ * somewhere and we also remove the CENTER styles if the syllable starts at
+ * CENTER */
+ if (!param_character) {
+ return;
+ }
+ while (current_character) {
+ if (!current_character->is_character) {
+ if (current_character->cos.s.style == ST_FORCED_CENTER) {
+ /* we can break here, as there won't be forced center plus
+ * center */
+ break;
+ }
+ if (current_character->cos.s.style == ST_CENTER) {
+ /* we have to do it in case param_character (the first
+ * character) is a ST_CENTER beginning */
+ if (!current_character->previous_character
+ && current_character == *param_character) {
+ *param_character = (*param_character)->next_character;
+ }
+ gregorio_suppress_current_character(&current_character);
+ continue;
+ }
+ }
+ current_character = current_character->next_character;
+ }
+ current_character = *param_character;
+ gregorio_go_to_first_character(&current_character);
+ first_character = current_character;
+ /* now we are going to place the two INITIAL styles (begin and end) */
+ while (current_character) {
+ if (!current_character->is_character
+ && current_character->cos.s.style == ST_FORCED_CENTER) {
+ /* we don't touch anything after a FORCED_CENTER, so we put an
+ * empty INITIAL style just before */
+ current_character = first_character;
+ gregorio_insert_style_before(ST_T_BEGIN, ST_INITIAL,
+ current_character);
+ current_character = current_character->previous_character;
+ gregorio_insert_style_after(ST_T_END, ST_INITIAL,
+ &current_character);
+ break;
+ }
+ /* this if is a hack to make gregorio consider verbatim blocks and
+ * special chars like one block, not a sequence of letters */
+ if (!current_character->is_character
+ && current_character->cos.s.type == ST_T_BEGIN
+ && (current_character->cos.s.style == ST_VERBATIM
+ || current_character->cos.s.style == ST_SPECIAL_CHAR)) {
+ gregorio_insert_style_before(ST_T_BEGIN, ST_INITIAL,
+ current_character);
+ start_of_special = current_character->previous_character;
+ /* ... which is now the begin-initial style */
+
+ if (current_character->next_character) {
+ current_character = current_character->next_character;
+ }
+ while (current_character->next_character
+ && current_character->is_character) {
+ current_character = current_character->next_character;
+ }
+ gregorio_insert_style_after(ST_T_END, ST_INITIAL,
+ &current_character);
+ if (separate_initial && start_of_special->previous_character) {
+ /* we need to move the initial to the front */
+ start_of_special->previous_character->next_character =
+ current_character->next_character;
+ current_character->next_character->previous_character =
+ start_of_special->previous_character;
+ start_of_special->previous_character = NULL;
+ current_character->next_character = first_character;
+ first_character->previous_character = current_character;
+
+ gregorio_message(_
+ ("Any style applied to the initial will be ignored."),
+ NULL, VERBOSITY_WARNING, 0);
+ }
+ break;
+ }
+ if (current_character->is_character) {
+ if (separate_initial && current_character->previous_character) {
+ /* we need to move the initial to the front */
+ current_character->previous_character->next_character =
+ current_character->next_character;
+ current_character->next_character->previous_character =
+ current_character->previous_character;
+ current_character->previous_character = NULL;
+ current_character->next_character = first_character;
+ first_character->previous_character = current_character;
+
+ gregorio_message(_
+ ("Any style applied to the initial will be ignored."),
+ NULL, VERBOSITY_WARNING, 0);
+ }
+ gregorio_insert_style_before(ST_T_BEGIN, ST_INITIAL,
+ current_character);
+ gregorio_insert_style_after(ST_T_END, ST_INITIAL,
+ &current_character);
+ break;
+ }
+ current_character = current_character->next_character;
+ }
+ /* now apply the first syllable style */
+ current_character = *param_character;
+ if (separate_initial) {
+ if (gregorio_go_to_end_initial(&current_character)) {
+ current_character = current_character->next_character;
+ }
+ } else {
+ gregorio_go_to_first_character(&current_character);
+ }
+ if (current_character) {
+ bool marked_syllable_iniital = false;
+ gregorio_insert_style_before(ST_T_BEGIN, ST_FIRST_SYLLABLE,
+ current_character);
+ do {
+ if (!marked_syllable_iniital && (current_character->is_character
+ || (current_character->cos.s.type == ST_T_BEGIN
+ && (current_character->cos.s.style == ST_VERBATIM
+ || current_character->cos.s.style
+ == ST_SPECIAL_CHAR
+ )
+ )
+ )) {
+ marked_syllable_iniital = true;
+ gregorio_insert_style_before(ST_T_BEGIN,
+ ST_FIRST_SYLLABLE_INITIAL, current_character);
+ if (!current_character->is_character) {
+ /* skip past the verbatim or special character */
+ if (current_character->next_character) {
+ current_character = current_character->next_character;
+ }
+ while (current_character->next_character
+ && current_character->is_character) {
+ current_character = current_character->next_character;
+ }
+ }
+ gregorio_insert_style_after(ST_T_END, ST_FIRST_SYLLABLE_INITIAL,
+ &current_character);
+ } else {
+ if (current_character->cos.s.style == ST_CENTER
+ || current_character->cos.s.style == ST_FORCED_CENTER) {
+ gregorio_insert_style_before(ST_T_END, ST_FIRST_SYLLABLE,
+ current_character);
+ gregorio_insert_style_after(ST_T_BEGIN, ST_FIRST_SYLLABLE,
+ &current_character);
+ }
+ }
+ if (!current_character->next_character) {
+ gregorio_insert_style_after(ST_T_END, ST_FIRST_SYLLABLE,
+ &current_character);
+ }
+ current_character = current_character->next_character;
+ } while (current_character);
+ }
+
+ current_character = *param_character;
+ gregorio_go_to_first_character(&current_character);
+ (*param_character) = current_character;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.h
new file mode 100644
index 00000000000..e27e665bc3a
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/characters.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CHARACTERS_H
+#define CHARACTERS_H
+
+#include "bool.h"
+#include "struct.h"
+
+/*
+ *
+ * The three next defines are the possible values of center_is_determined.
+ *
+ * CENTER_NOT_DETERMINED means that the plugin has encountered no { nor } (in
+ * the gabc syntax). CENTER_HALF_DETERMINED means that the plugin has
+ * encountered a { but no }, and we will try to determine a middle starting
+ * after the {. CENTER_FULLY_DETERMINED means that lex has encountered a { and
+ * a }, so we won't determine the middle, it is considered done.
+ * CENTER_DETERMINING_MIDDLE is used internally in the big function to know
+ * where we are in the middle determination.
+ *
+ */
+
+typedef enum gregorio_center_determination {
+ CENTER_NOT_DETERMINED = 0,
+ CENTER_HALF_DETERMINED,
+ CENTER_FULLY_DETERMINED,
+ CENTER_DETERMINING_MIDDLE
+} gregorio_center_determination;
+
+/* this is a temporary structure that will be used for style determination */
+
+typedef struct det_style {
+ unsigned char style;
+ struct det_style *previous_style;
+ struct det_style *next_style;
+} det_style;
+
+gregorio_character *gregorio_first_text(gregorio_score *score);
+
+void gregorio_write_text(bool skip_initial,
+ gregorio_character *current_character,
+ FILE *f, void (*printverb) (FILE *, grewchar *),
+ void (*printchar) (FILE *, grewchar),
+ void (*begin) (FILE *, grestyle_style),
+ void (*end) (FILE *, grestyle_style),
+ void (*printspchar) (FILE *, grewchar *));
+
+void gregorio_write_initial(gregorio_character *current_character,
+ FILE *f, void (*printverb) (FILE *, grewchar *),
+ void (*printchar) (FILE *, grewchar),
+ void (*begin) (FILE *, grestyle_style),
+ void (*end) (FILE *, grestyle_style),
+ void (*printspchar) (FILE *, grewchar *));
+
+void gregorio_set_centering_language(char *language);
+
+gregorio_character *gregorio_first_text(gregorio_score *score);
+
+void gregorio_rebuild_characters(gregorio_character **param_character,
+ gregorio_center_determination center_is_determined, bool skip_initial);
+
+void gregorio_rebuild_first_syllable(gregorio_character **param_character,
+ bool separate_initial);
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config.h
new file mode 100644
index 00000000000..04f8734cb3b
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config.h
@@ -0,0 +1,33 @@
+/*
+ * Gregorio configuration headers.
+ *
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_.h"
+
+#ifdef BRANCH_VERSION
+#define GREGORIO_VERSION VERSION "-" BRANCH_VERSION
+#else
+#define GREGORIO_VERSION VERSION
+#endif
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config_.h.in b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config_.h.in
new file mode 100644
index 00000000000..de3782d35c3
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/config_.h.in
@@ -0,0 +1,86 @@
+/* src/config_.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdalign.h> header file. */
+#undef HAVE_STDALIGN_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 to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* 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
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Use kpathsea */
+#undef USE_KPSE
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#undef YYTEXT_POINTER
+
+/* Always define this. */
+#undef _GNU_SOURCE
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/dump/dump.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/dump/dump.c
new file mode 100644
index 00000000000..595d9b5b70b
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/dump/dump.c
@@ -0,0 +1,931 @@
+/*
+ * Copyright (C) 2007-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "bool.h"
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+#include "plugins.h"
+#include "support.h"
+
+static const char *unknown(int value) {
+ static char buf[20];
+ gregorio_snprintf(buf, 20, "?%d", value);
+ return buf;
+}
+
+static const char *dump_translation_type_to_string(gregorio_tr_centering
+ translation_type)
+{
+ switch (translation_type) {
+ case TR_NORMAL:
+ return "TR_NORMAL";
+ case TR_WITH_CENTER_BEGINNING:
+ return "TR_WITH_CENTER_BEGINNING";
+ case TR_WITH_CENTER_END:
+ return "TR_WITH_CENTER_END";
+ }
+ return unknown(translation_type);
+}
+
+static const char *dump_nlba_to_string(gregorio_nlba no_linebreak_area)
+{
+ switch (no_linebreak_area) {
+ case NLBA_NORMAL:
+ return "NLBA_NORMAL";
+ case NLBA_BEGINNING:
+ return "NLBA_BEGINNING";
+ case NLBA_END:
+ return "NLBA_END";
+ }
+ return unknown(no_linebreak_area);
+}
+
+static const char *dump_style_to_string(grestyle_style style)
+{
+ switch (style) {
+ case ST_NO_STYLE:
+ return " ST_NO_STYLE";
+ case ST_ITALIC:
+ return " ST_ITALIC";
+ case ST_CENTER:
+ return " ST_CENTER";
+ case ST_FORCED_CENTER:
+ return " ST_FORCED_CENTER";
+ case ST_INITIAL:
+ return " ST_INITIAL";
+ case ST_BOLD:
+ return " ST_BOLD";
+ case ST_TT:
+ return " ST_TT";
+ case ST_UNDERLINED:
+ return " ST_UNDERLINED";
+ case ST_COLORED:
+ return " ST_COLORED";
+ case ST_SMALL_CAPS:
+ return " ST_SMALL_CAPS";
+ case ST_SPECIAL_CHAR:
+ return " ST_SPECIAL_CHAR";
+ case ST_VERBATIM:
+ return " ST_VERBATIM";
+ case ST_FIRST_SYLLABLE:
+ return "ST_FIRST_SYLLABLE";
+ case ST_FIRST_SYLLABLE_INITIAL:
+ return "ST_FIRST_SYLLABLE_INITIAL";
+ }
+ return unknown(style);
+}
+
+static void dump_write_characters(FILE *const f,
+ const gregorio_character * current_character)
+{
+ while (current_character) {
+ fprintf(f,
+ "---------------------------------------------------------------------\n");
+ if (current_character->is_character) {
+ fprintf(f, " character ");
+ gregorio_print_unichar(f, current_character->cos.character);
+ fprintf(f, "\n");
+ } else {
+ if (current_character->cos.s.type == ST_T_BEGIN) {
+ fprintf(f, " beginning of style %s\n",
+ dump_style_to_string(current_character->cos.s.style));
+ } else {
+ fprintf(f, " end of style %s\n",
+ dump_style_to_string(current_character->cos.s.style));
+ }
+ }
+ current_character = current_character->next_character;
+ }
+}
+
+static const char *dump_key_to_char(const int key)
+{
+ switch (key) {
+ case -2:
+ return "f1";
+ case 0:
+ return "f2";
+ case 2:
+ return "f3";
+ case 4:
+ return "f4";
+ case 1:
+ return "c1";
+ case 3:
+ return "c2";
+ case 5:
+ return "c3";
+ case 7:
+ return "c4";
+ }
+ return "no key defined";
+}
+
+static const char *dump_syllable_position(gregorio_word_position pos)
+{
+ switch (pos) {
+ case WORD_BEGINNING:
+ return "WORD_BEGINNING";
+ case WORD_MIDDLE:
+ return "WORD_MIDDLE";
+ case WORD_END:
+ return "WORD_END";
+ case WORD_ONE_SYLLABLE:
+ return "WORD_ONE_SYLLABLE";
+ }
+ return "unknown";
+}
+
+static const char *dump_type(gregorio_type type)
+{
+ switch (type) {
+ case GRE_NOTE:
+ return "GRE_NOTE";
+ case GRE_GLYPH:
+ return "GRE_GLYPH";
+ case GRE_ELEMENT:
+ return "GRE_ELEMENT";
+ case GRE_FLAT:
+ return "GRE_FLAT";
+ case GRE_SHARP:
+ return "GRE_SHARP";
+ case GRE_NATURAL:
+ return "GRE_NATURAL";
+ case GRE_C_KEY_CHANGE:
+ return "GRE_C_KEY_CHANGE";
+ case GRE_F_KEY_CHANGE:
+ return "GRE_F_KEY_CHANGE";
+ case GRE_END_OF_LINE:
+ return "GRE_END_OF_LINE";
+ case GRE_END_OF_PAR:
+ return "GRE_END_OF_PAR";
+ case GRE_CUSTOS:
+ return "GRE_CUSTOS";
+ case GRE_SPACE:
+ return "GRE_SPACE";
+ case GRE_BAR:
+ return "GRE_BAR";
+ case GRE_SYLLABLE:
+ return "GRE_SYLLABLE";
+ case GRE_TEXVERB_GLYPH:
+ return "GRE_TEXVERB_GLYPH";
+ case GRE_TEXVERB_ELEMENT:
+ return "GRE_TEXVERB_ELEMENT";
+ case GRE_NLBA:
+ return "GRE_NLBA";
+ case GRE_ALT:
+ return "GRE_ALT";
+ case GRE_MANUAL_CUSTOS:
+ return "GRE_MANUAL_CUSTOS";
+ default:
+ return "unknown";
+ }
+}
+
+static const char *dump_bar_type(gregorio_bar element_type)
+{
+ switch (element_type) {
+ case B_NO_BAR:
+ return "B_NO_BAR";
+ case B_VIRGULA:
+ return "B_VIRGULA";
+ case B_DIVISIO_MINIMA:
+ return "B_DIVISIO_MINIMA";
+ case B_DIVISIO_MINOR:
+ return "B_DIVISIO_MINOR";
+ case B_DIVISIO_MAIOR:
+ return "B_DIVISIO_MAIOR";
+ case B_DIVISIO_FINALIS:
+ return "B_DIVISIO_FINALIS";
+ case B_DIVISIO_MINOR_D1:
+ return "B_DIVISIO_MINOR_D1";
+ case B_DIVISIO_MINOR_D2:
+ return "B_DIVISIO_MINOR_D2";
+ case B_DIVISIO_MINOR_D3:
+ return "B_DIVISIO_MINOR_D3";
+ case B_DIVISIO_MINOR_D4:
+ return "B_DIVISIO_MINOR_D4";
+ case B_DIVISIO_MINOR_D5:
+ return "B_DIVISIO_MINOR_D5";
+ case B_DIVISIO_MINOR_D6:
+ return "B_DIVISIO_MINOR_D6";
+ }
+ return "unknown";
+}
+
+static const char *dump_space_type(gregorio_space element_type)
+{
+ switch (element_type) {
+ case SP_DEFAULT:
+ return "SP_DEFAULT";
+ case SP_NO_SPACE:
+ return "SP_NO_SPACE";
+ case SP_ZERO_WIDTH:
+ return "SP_ZERO_WIDTH";
+ case SP_NEUMATIC_CUT:
+ return "SP_NEUMATIC_CUT";
+ case SP_LARGER_SPACE:
+ return "SP_LARGER_SPACE";
+ case SP_GLYPH_SPACE:
+ return "SP_GLYPH_SPACE";
+ case SP_GLYPH_SPACE_NB:
+ return "SP_GLYPH_SPACE_NB";
+ case SP_LARGER_SPACE_NB:
+ return "SP_LARGER_SPACE_NB";
+ case SP_NEUMATIC_CUT_NB:
+ return "SP_NEUMATIC_CUT_NB";
+ }
+ return "unknown";
+}
+
+static const char *dump_liquescentia(gregorio_liquescentia liquescentia)
+{
+ switch (liquescentia) {
+ case L_NO_LIQUESCENTIA:
+ return "L_NO_LIQUESCENTIA";
+ case L_DEMINUTUS:
+ return "L_DEMINUTUS";
+ case L_AUCTUS_ASCENDENS:
+ return "L_AUCTUS_ASCENDENS";
+ case L_AUCTUS_DESCENDENS:
+ return "L_AUCTUS_DESCENDENS";
+ case L_AUCTA:
+ return "L_AUCTA";
+ case L_INITIO_DEBILIS:
+ return "L_INITIO_DEBILIS";
+ case L_DEMINUTUS_INITIO_DEBILIS:
+ return "L_DEMINUTUS_INITIO_DEBILIS";
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ return "L_AUCTUS_ASCENDENS_INITIO_DEBILIS";
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ return "L_AUCTUS_DESCENDENS_INITIO_DEBILIS";
+ case L_AUCTA_INITIO_DEBILIS:
+ return "L_AUCTA_INITIO_DEBILIS";
+ }
+ return "unknown";
+}
+
+static const char *dump_glyph_type(gregorio_glyph_type glyph_type)
+{
+ switch (glyph_type) {
+ case G_PUNCTUM_INCLINATUM:
+ return "G_PUNCTUM_INCLINATUM";
+ case G_2_PUNCTA_INCLINATA_DESCENDENS:
+ return "G_2_PUNCTA_INCLINATA_DESCENDENS";
+ case G_3_PUNCTA_INCLINATA_DESCENDENS:
+ return "G_3_PUNCTA_INCLINATA_DESCENDENS";
+ case G_4_PUNCTA_INCLINATA_DESCENDENS:
+ return "G_4_PUNCTA_INCLINATA_DESCENDENS";
+ case G_5_PUNCTA_INCLINATA_DESCENDENS:
+ return "G_5_PUNCTA_INCLINATA_DESCENDENS";
+ case G_2_PUNCTA_INCLINATA_ASCENDENS:
+ return "G_2_PUNCTA_INCLINATA_ASCENDENS";
+ case G_3_PUNCTA_INCLINATA_ASCENDENS:
+ return "G_3_PUNCTA_INCLINATA_ASCENDENS";
+ case G_4_PUNCTA_INCLINATA_ASCENDENS:
+ return "G_4_PUNCTA_INCLINATA_ASCENDENS";
+ case G_5_PUNCTA_INCLINATA_ASCENDENS:
+ return "G_5_PUNCTA_INCLINATA_ASCENDENS";
+ case G_TRIGONUS:
+ return "G_TRIGONUS";
+ case G_PUNCTA_INCLINATA:
+ return "G_PUNCTA_INCLINATA";
+ case G_UNDETERMINED:
+ return "G_UNDETERMINED";
+ case G_VIRGA:
+ return "G_VIRGA";
+ case G_VIRGA_REVERSA:
+ return "G_VIRGA_REVERSA";
+ case G_STROPHA:
+ return "G_STROPHA";
+ case G_STROPHA_AUCTA:
+ return "G_STROPHA_AUCTA";
+ case G_PUNCTUM:
+ return "G_PUNCTUM";
+ case G_PODATUS:
+ return "G_PODATUS";
+ case G_PES_QUADRATUM:
+ return "G_PES_QUADRATUM";
+ case G_FLEXA:
+ return "G_FLEXA";
+ case G_TORCULUS:
+ return "G_TORCULUS";
+ case G_TORCULUS_RESUPINUS:
+ return "G_TORCULUS_RESUPINUS";
+ case G_TORCULUS_RESUPINUS_FLEXUS:
+ return "G_TORCULUS_RESUPINUS_FLEXUS";
+ case G_PORRECTUS:
+ return "G_PORRECTUS";
+ case G_PORRECTUS_FLEXUS:
+ return "G_PORRECTUS_FLEXUS";
+ case G_BIVIRGA:
+ return "G_BIVIRGA";
+ case G_TRIVIRGA:
+ return "G_TRIVIRGA";
+ case G_DISTROPHA:
+ return "G_DISTROPHA";
+ case G_DISTROPHA_AUCTA:
+ return "G_DISTROPHA_AUCTA";
+ case G_TRISTROPHA:
+ return "G_TRISTROPHA";
+ case G_ANCUS:
+ return "G_ANCUS";
+ case G_TRISTROPHA_AUCTA:
+ return "G_TRISTROPHA_AUCTA";
+ case G_PES_QUADRATUM_FIRST_PART:
+ return "G_PES_QUADRATUM_FIRST_PART";
+ case G_SCANDICUS:
+ return "G_SCANDICUS";
+ case G_SALICUS:
+ return "G_SALICUS";
+ case G_VIRGA_STRATA:
+ return "G_VIRGA_STRATA";
+ case G_TORCULUS_LIQUESCENS:
+ return "G_TORCULUS_LIQUESCENS";
+ default:
+ return "unknown";
+ }
+}
+
+static const char *dump_shape(gregorio_shape shape)
+{
+ switch (shape) {
+ case S_UNDETERMINED:
+ return "S_UNDETERMINED";
+ case S_PUNCTUM:
+ return "S_PUNCTUM";
+ case S_PUNCTUM_END_OF_GLYPH:
+ return "S_PUNCTUM_END_OF_GLYPH";
+ case S_PUNCTUM_INCLINATUM:
+ return "S_PUNCTUM_INCLINATUM";
+ case S_PUNCTUM_INCLINATUM_DEMINUTUS:
+ return "S_PUNCTUM_INCLINATUM_DEMINUTUS";
+ case S_PUNCTUM_INCLINATUM_AUCTUS:
+ return "S_PUNCTUM_INCLINATUM_AUCTUS";
+ case S_VIRGA:
+ return "S_VIRGA";
+ case S_VIRGA_REVERSA:
+ return "S_VIRGA_REVERSA";
+ case S_BIVIRGA:
+ return "S_BIVIRGA";
+ case S_TRIVIRGA:
+ return "S_TRIVIRGA";
+ case S_ORISCUS:
+ return "S_ORISCUS";
+ case S_ORISCUS_AUCTUS:
+ return "S_ORISCUS_AUCTUS";
+ case S_ORISCUS_DEMINUTUS:
+ return "S_ORISCUS_DEMINUTUS";
+ case S_ORISCUS_SCAPUS:
+ return "S_ORISCUS_SCAPUS";
+ case S_QUILISMA:
+ return "S_QUILISMA";
+ case S_STROPHA:
+ return "S_STROPHA";
+ case S_STROPHA_AUCTA:
+ return "S_STROPHA_AUCTA";
+ case S_DISTROPHA:
+ return "S_DISTROPHA";
+ case S_DISTROPHA_AUCTA:
+ return "S_DISTROPHA_AUCTA";
+ case S_TRISTROPHA:
+ return "S_TRISTROPHA";
+ case S_TRISTROPHA_AUCTA:
+ return "S_TRISTROPHA_AUCTA";
+ case S_QUADRATUM:
+ return "S_QUADRATUM";
+ case S_PUNCTUM_CAVUM:
+ return "S_PUNCTUM_CAVUM";
+ case S_LINEA_PUNCTUM:
+ return "S_LINEA_PUNCTUM";
+ case S_LINEA_PUNCTUM_CAVUM:
+ return "S_LINEA_PUNCTUM_CAVUM";
+ case S_LINEA:
+ return "S_LINEA";
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ return "S_PUNCTUM_CAVUM_INCLINATUM";
+ case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS:
+ return "S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS";
+ default:
+ return "unknown";
+ }
+}
+
+static const char *dump_signs(gregorio_sign signs)
+{
+ switch (signs) {
+ case _NO_SIGN:
+ return "_NO_SIGN";
+ case _PUNCTUM_MORA:
+ return "_PUNCTUM_MORA";
+ case _AUCTUM_DUPLEX:
+ return "_AUCTUM_DUPLEX";
+ case _V_EPISEMUS:
+ return "_V_EPISEMUS";
+ case _V_EPISEMUS_PUNCTUM_MORA:
+ return "_V_EPISEMUS_PUNCTUM_MORA";
+ case _V_EPISEMUS_AUCTUM_DUPLEX:
+ return "_V_EPISEMUS_AUCTUM_DUPLEX";
+ default:
+ return "unknown";
+ }
+}
+
+/* a function dumping special signs */
+static const char *dump_special_sign(gregorio_sign special_sign)
+{
+ switch (special_sign) {
+ case _ACCENTUS:
+ return "_ACCENTUS";
+ case _ACCENTUS_REVERSUS:
+ return "_ACCENTUS_REVERSUS";
+ case _CIRCULUS:
+ return "_CIRCULUS";
+ case _SEMI_CIRCULUS:
+ return "_SEMI_CIRCULUS";
+ case _SEMI_CIRCULUS_REVERSUS:
+ return "_SEMI_CIRCULUS_REVERSUS";
+ case _V_EPISEMUS:
+ return "_V_EPISEMUS";
+ case _V_EPISEMUS_BAR_H_EPISEMUS:
+ return "_V_EPISEMUS_BAR_H_EPISEMUS";
+ case _BAR_H_EPISEMUS:
+ return "_BAR_H_EPISEMUS";
+ default:
+ return "unknown";
+ }
+}
+
+static const char *dump_h_episemus_size(grehepisemus_size size)
+{
+ switch (size) {
+ case H_NORMAL:
+ return "H_NORMAL";
+ case H_SMALL_LEFT:
+ return "H_SMALL_LEFT";
+ case H_SMALL_CENTRE:
+ return "H_SMALL_CENTRE";
+ case H_SMALL_RIGHT:
+ return "H_SMALL_RIGHT";
+ }
+ return "unknown";
+}
+
+static const char *dump_bool(bool value) {
+ return value? "true" : "false";
+}
+
+static const char *dump_vposition(gregorio_vposition vpos) {
+ switch (vpos) {
+ case VPOS_AUTO:
+ return "VPOS_AUTO";
+ case VPOS_ABOVE:
+ return "VPOS_ABOVE";
+ case VPOS_BELOW:
+ return "VPOS_BELOW";
+ }
+ return "unknown";
+}
+
+static const char *dump_pitch(const char height) {
+ static char buf[20];
+ if (height >= LOWEST_PITCH && height <= HIGHEST_PITCH) {
+ gregorio_snprintf(buf, 20, "%c", height + 'a' - LOWEST_PITCH);
+ } else {
+ gregorio_snprintf(buf, 20, "?%d", height);
+ }
+ return buf;
+}
+
+void dump_write_score(FILE *f, gregorio_score *score)
+{
+ gregorio_voice_info *voice_info = score->first_voice_info;
+ int i;
+ int annotation_num;
+ gregorio_syllable *syllable;
+
+ if (!f) {
+ gregorio_message(_("call with NULL file"), "gregoriotex_write_score",
+ VERBOSITY_ERROR, 0);
+ return;
+ }
+ fprintf(f,
+ "=====================================================================\n"
+ " SCORE INFOS\n"
+ "=====================================================================\n");
+ if (score->number_of_voices) {
+ fprintf(f, " number_of_voices %d\n",
+ score->number_of_voices);
+ }
+ if (score->name) {
+ fprintf(f, " name %s\n", score->name);
+ }
+ if (score->gabc_copyright) {
+ fprintf(f, " gabc_copyright %s\n", score->gabc_copyright);
+ }
+ if (score->score_copyright) {
+ fprintf(f, " score_copyright %s\n", score->score_copyright);
+ }
+ if (score->office_part) {
+ fprintf(f, " office_part %s\n", score->office_part);
+ }
+ if (score->occasion) {
+ fprintf(f, " occasion %s\n", score->occasion);
+ }
+ if (score->meter) {
+ fprintf(f, " meter %s\n", score->meter);
+ }
+ if (score->commentary) {
+ fprintf(f, " commentary %s\n", score->commentary);
+ }
+ if (score->arranger) {
+ fprintf(f, " arranger %s\n", score->arranger);
+ }
+ if (score->si.author) {
+ fprintf(f, " author %s\n", score->si.author);
+ }
+ if (score->si.date) {
+ fprintf(f, " date %s\n", score->si.date);
+ }
+ if (score->si.manuscript) {
+ fprintf(f, " manuscript %s\n", score->si.manuscript);
+ }
+ if (score->si.manuscript_reference) {
+ fprintf(f, " manuscript_reference %s\n",
+ score->si.manuscript_reference);
+ }
+ if (score->si.manuscript_storage_place) {
+ fprintf(f, " manuscript_storage_place %s\n",
+ score->si.manuscript_storage_place);
+ }
+ if (score->si.book) {
+ fprintf(f, " book %s\n", score->si.book);
+ }
+ if (score->si.transcriber) {
+ fprintf(f, " transcriber %s\n", score->si.transcriber);
+ }
+ if (score->si.transcription_date) {
+ fprintf(f, " transcription_date %s\n",
+ score->si.transcription_date);
+ }
+ if (score->gregoriotex_font) {
+ fprintf(f, " gregoriotex_font %s\n",
+ score->gregoriotex_font);
+ }
+ if (score->mode) {
+ fprintf(f, " mode %d\n", score->mode);
+ }
+ if (score->initial_style) {
+ fprintf(f, " initial_style %d\n", score->initial_style);
+ }
+ if (score->nabc_lines) {
+ fprintf (f, " nabc_lines %d\n", (int)score->nabc_lines);
+ }
+ if (score->user_notes) {
+ fprintf(f, " user_notes %s\n", score->user_notes);
+ }
+ fprintf(f, "\n\n"
+ "=====================================================================\n"
+ " VOICES INFOS\n"
+ "=====================================================================\n");
+ for (i = 0; i < score->number_of_voices; i++) {
+ fprintf(f, " Voice %d\n", i + 1);
+ if (voice_info->initial_key) {
+ fprintf(f, " initial_key %d (%s)\n",
+ voice_info->initial_key,
+ dump_key_to_char(voice_info->initial_key));
+ if (voice_info->flatted_key) {
+ fprintf(f, " flatted_key true\n");
+ }
+ }
+ for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS;
+ ++annotation_num) {
+ if (score->annotation[annotation_num]) {
+ fprintf(f, " annotation %s\n",
+ score->annotation[annotation_num]);
+ }
+ }
+ if (voice_info->style) {
+ fprintf(f, " style %s\n", voice_info->style);
+ }
+ if (voice_info->virgula_position) {
+ fprintf(f, " virgula_position %s\n",
+ voice_info->virgula_position);
+ }
+ voice_info = voice_info->next_voice_info;
+ }
+ fprintf(f, "\n\n"
+ "=====================================================================\n"
+ " SCORE\n"
+ "=====================================================================\n");
+ for (syllable = score->first_syllable; syllable;
+ syllable = syllable->next_syllable) {
+ gregorio_element *element;
+ if (syllable->type) {
+ fprintf(f, " type %d (%s)\n",
+ syllable->type, dump_type(syllable->type));
+ }
+ if (syllable->position) {
+ fprintf(f, " position %d (%s)\n",
+ syllable->position,
+ dump_syllable_position(syllable->position));
+ }
+ if (syllable->special_sign) {
+ fprintf(f, " special sign %s\n",
+ dump_special_sign(syllable->special_sign));
+ }
+ if (syllable->no_linebreak_area != NLBA_NORMAL) {
+ fprintf(f, " no line break area %s\n",
+ dump_nlba_to_string(syllable->no_linebreak_area));
+ }
+ if (syllable->text) {
+ if (syllable->translation) {
+ fprintf(f, "\n Text\n");
+ }
+ dump_write_characters(f, syllable->text);
+ }
+ if ((syllable->translation
+ && syllable->translation_type != TR_WITH_CENTER_END)
+ || syllable->translation_type == TR_WITH_CENTER_END) {
+ fprintf(f, "\n Translation type %s",
+ dump_translation_type_to_string
+ (syllable->translation_type));
+ if (syllable->translation_type == TR_WITH_CENTER_END) {
+ fprintf(f, "\n");
+ }
+ }
+ if (syllable->translation) {
+ fprintf(f, "\n Translation\n");
+ dump_write_characters(f, syllable->translation);
+ }
+ if (syllable->abovelinestext) {
+ fprintf(f, "\n Abovelinestext\n %s", syllable->abovelinestext);
+ }
+ for (element = *syllable->elements; element; element = element->next) {
+ gregorio_glyph *glyph;
+ fprintf(f, "---------------------------------------------------------------------\n");
+ if (element->type) {
+ fprintf(f, " type %d (%s)\n",
+ element->type, dump_type(element->type));
+ }
+ switch (element->type) {
+ case GRE_CUSTOS:
+ if (element->u.misc.pitched.pitch) {
+ fprintf(f, " pitch %s\n",
+ dump_pitch(element->u.misc.pitched.pitch));
+ }
+ if (element->u.misc.pitched.force_pitch) {
+ fprintf(f, " force_pitch true\n");
+ }
+ break;
+ case GRE_SPACE:
+ if (element->u.misc.unpitched.info.space) {
+ fprintf(f, " space %d (%s)\n",
+ element->u.misc.unpitched.info.space,
+ dump_space_type(element->u.misc.unpitched.info.
+ space));
+ }
+ break;
+ case GRE_TEXVERB_ELEMENT:
+ fprintf(f, " TeX string \"%s\"\n",
+ element->texverb);
+ break;
+ case GRE_NLBA:
+ fprintf(f, " nlba %d (%s)\n",
+ element->u.misc.unpitched.info.nlba,
+ dump_nlba_to_string(element->u.misc.unpitched.info.
+ nlba));
+ break;
+ case GRE_ALT:
+ fprintf(f, " Above lines text \"%s\"\n",
+ element->texverb);
+ break;
+ case GRE_BAR:
+ if (element->u.misc.unpitched.info.bar) {
+ fprintf(f, " bar %d (%s)\n",
+ element->u.misc.unpitched.info.bar,
+ dump_bar_type(element->u.misc.unpitched.info.bar));
+ if (element->u.misc.unpitched.special_sign) {
+ fprintf(f, " special sign %d (%s)\n",
+ element->u.misc.unpitched.special_sign,
+ dump_special_sign(element->u.misc.unpitched.
+ special_sign));
+ }
+ }
+ break;
+ case GRE_C_KEY_CHANGE:
+ if (element->u.misc.pitched.pitch) {
+ fprintf(f, " clef %d (c%d)\n",
+ element->u.misc.pitched.pitch,
+ element->u.misc.pitched.pitch - '0');
+ if (element->u.misc.pitched.flatted_key) {
+ fprintf(f, " flatted_key true\n");
+ }
+ }
+ break;
+ case GRE_F_KEY_CHANGE:
+ if (element->u.misc.pitched.pitch) {
+ fprintf(f, " clef %d (f%d)\n",
+ element->u.misc.pitched.pitch,
+ element->u.misc.pitched.pitch - '0');
+ if (element->u.misc.pitched.flatted_key) {
+ fprintf(f, " flatted_key true\n");
+ }
+ }
+ break;
+ case GRE_END_OF_LINE:
+ if (element->u.misc.unpitched.info.sub_type) {
+ fprintf(f, " sub_type %d (%s)\n",
+ element->u.misc.unpitched.info.sub_type,
+ dump_type(element->u.misc.unpitched.info.sub_type));
+ }
+ break;
+ case GRE_ELEMENT:
+ for (glyph = element->u.first_glyph; glyph;
+ glyph = glyph->next) {
+ gregorio_note *note;
+ fprintf(f, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");
+ if (glyph->type) {
+ fprintf(f, " type %d (%s)\n",
+ glyph->type, dump_type(glyph->type));
+ }
+ switch (glyph->type) {
+ case GRE_TEXVERB_GLYPH:
+ fprintf(f, " TeX string \"%s\"\n",
+ glyph->texverb);
+ break;
+
+ case GRE_SPACE:
+ fprintf(f, " space %d (%s)\n",
+ glyph->u.misc.unpitched.info.space,
+ dump_space_type(glyph->u.misc.unpitched.info.
+ space));
+ break;
+
+ case GRE_BAR:
+ fprintf(f, " glyph_type %d (%s)\n",
+ glyph->u.misc.unpitched.info.bar,
+ dump_bar_type(glyph->u.misc.unpitched.info.
+ bar));
+ if (glyph->u.misc.unpitched.special_sign) {
+ fprintf(f, " special sign %d (%s)\n",
+ glyph->u.misc.unpitched.special_sign,
+ dump_special_sign(glyph->u.misc.unpitched.
+ special_sign));
+ }
+ break;
+
+ case GRE_FLAT:
+ case GRE_NATURAL:
+ case GRE_SHARP:
+ fprintf(f, " pitch %s\n",
+ dump_pitch(glyph->u.misc.pitched.pitch));
+ break;
+
+ case GRE_GLYPH:
+ fprintf(f, " glyph_type %d (%s)\n",
+ glyph->u.notes.glyph_type,
+ dump_glyph_type(glyph->u.notes.glyph_type));
+ if (glyph->u.notes.liquescentia) {
+ fprintf(f, " liquescentia %d (%s)\n",
+ glyph->u.notes.liquescentia,
+ dump_liquescentia(glyph->u.notes.
+ liquescentia));
+ }
+ break;
+
+ default:
+ fprintf(f, " !!! UNKNOWN !!! !!!\n");
+ break;
+ }
+ if (glyph->type == GRE_GLYPH) {
+ for (note = glyph->u.notes.first_note; note;
+ note = note->next) {
+ fprintf(f, "- - - - - - - - - - - - - - - - - - - - - - - \n");
+ if (note->type) {
+ fprintf(f, " type %d (%s)\n",
+ note->type, dump_type(note->type));
+ }
+ switch (note->type) {
+ case GRE_NOTE:
+ if (note->u.note.pitch) {
+ fprintf(f, " pitch %s\n",
+ dump_pitch(note->u.note.pitch));
+ }
+ if (note->u.note.shape) {
+ fprintf(f, " shape %d (%s)\n",
+ note->u.note.shape,
+ dump_shape(note->u.note.shape));
+ }
+ if (note->u.note.liquescentia) {
+ fprintf(f, " liquescentia %d (%s)\n",
+ note->u.note.liquescentia,
+ dump_liquescentia(note->u.note.
+ liquescentia));
+ }
+ break;
+
+ default:
+ fprintf(f, " !!! NOT ALLOWED !!! !!!\n");
+ break;
+ }
+ if (note->texverb) {
+ fprintf(f, " TeX string \"%s\"\n",
+ note->texverb);
+ }
+ if (note->choral_sign) {
+ fprintf(f, " Choral Sign \"%s\"\n",
+ note->choral_sign);
+ }
+ if (note->signs) {
+ fprintf(f, " signs %d (%s)\n",
+ note->signs, dump_signs(note->signs));
+ }
+ if (note->signs & _V_EPISEMUS && note->v_episemus_height) {
+ if (note->v_episemus_height < note->u.note.pitch) {
+ fprintf(f, " v episemus forced BELOW\n");
+ }
+ else {
+ fprintf(f, " v episemus forced ABOVE\n");
+ }
+ }
+ if ((note->signs == _PUNCTUM_MORA
+ || note->signs == _V_EPISEMUS_PUNCTUM_MORA)
+ && note->mora_vposition) {
+ fprintf(f, " mora vposition %s\n",
+ dump_vposition(note->mora_vposition));
+ }
+ if (note->special_sign) {
+ fprintf(f, " special sign %d (%s)\n",
+ note->special_sign,
+ dump_special_sign(note->special_sign));
+ }
+ if (note->h_episemus_above == HEPISEMUS_AUTO
+ && note->h_episemus_below == HEPISEMUS_AUTO) {
+ fprintf(f, " auto hepisemus size %d (%s)\n",
+ note->h_episemus_above_size,
+ dump_h_episemus_size(note->h_episemus_above_size));
+ fprintf(f, " auto hepisemus bridge %s\n",
+ dump_bool(note->h_episemus_above_connect));
+ }
+ else {
+ if (note->h_episemus_above == HEPISEMUS_FORCED) {
+ fprintf(f, " above hepisemus size %d (%s)\n",
+ note->h_episemus_above_size,
+ dump_h_episemus_size(note->h_episemus_above_size));
+ fprintf(f, " above hepisemus bridge %s\n",
+ dump_bool(note->h_episemus_above_connect));
+ }
+ if (note->h_episemus_below == HEPISEMUS_FORCED) {
+ fprintf(f, " below hepisemus size %d (%s)\n",
+ note->h_episemus_below_size,
+ dump_h_episemus_size(note->h_episemus_below_size));
+ fprintf(f, " below hepisemus bridge %s\n",
+ dump_bool(note->h_episemus_below_connect));
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ /* do nothing */
+ break;
+ }
+ if (element->nabc_lines) {
+ fprintf(f, " nabc_lines %d\n",
+ (int)element->nabc_lines);
+ }
+ if (element->nabc_lines && element->nabc) {
+ for (i = 0; i < (int)element->nabc_lines; i++) {
+ if (element->nabc[i]) {
+ fprintf(f, " nabc_line %d \"%s\"\n",
+ (int)(i+1), element->nabc[i]);
+ }
+ }
+ }
+ }
+ fprintf(f, "=====================================================================\n");
+ }
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/encode_utf8strings.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/encode_utf8strings.c
new file mode 100644
index 00000000000..d932a9aeb4a
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/encode_utf8strings.c
@@ -0,0 +1,75 @@
+/*
+ * Utility program to convert utf8strings.h.in into utf8strings.h
+ *
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+int main(int argc, char **argv)
+{
+ char buf[5];
+ FILE *input, *output;
+ int c;
+
+ if (argc != 3) {
+ fprintf(stderr, "Incorrect arguments\n");
+ return -1;
+ }
+
+ input = fopen(argv[1], "rb");
+ if (input == NULL) {
+ fprintf(stderr, "Error opening %s: %s\n", argv[1], strerror(errno));
+ return -1;
+ }
+
+ output = fopen(argv[2], "wb");
+ if (output == NULL) {
+ fprintf(stderr, "Error creating %s: %s\n", argv[2], strerror(errno));
+ return -1;
+ }
+
+ while ((c = fgetc(input)) != EOF) {
+ if (c & 0x80) {
+ snprintf(buf, sizeof(buf), "\\%03o", c);
+ if (fwrite(buf, sizeof(buf) - sizeof(char), 1, output) != 1) {
+ fprintf(stderr, "Error writing %s: %s\n", argv[2],
+ strerror(errno));
+ return -1;
+ }
+ } else {
+ if (fputc(c, output) != c) {
+ fprintf(stderr, "Error writing %s: %s\n", argv[2],
+ strerror(errno));
+ return -1;
+ }
+ }
+ }
+
+ if (fclose(output) != 0) {
+ fprintf(stderr, "Error closing %s: %s\n", argv[2], strerror(errno));
+ return -1;
+ }
+ if (fclose(input) != 0) {
+ fprintf(stderr, "Error closing %s: %s\n", argv[1], strerror(errno));
+ return -1;
+ }
+ return 0;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-elements-determination.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-elements-determination.c
new file mode 100644
index 00000000000..eefdc86e49f
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-elements-determination.c
@@ -0,0 +1,281 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include "bool.h"
+#include "struct.h"
+#include "messages.h"
+
+#include "gabc.h"
+
+/*
+ *
+ * two inline functions that will be useful in the future: they are the tests
+ * to put in a if statement to determine if a glyph type is puncta incliata
+ * ascendens or descendens
+ *
+ */
+
+static __inline bool is_puncta_ascendens(char glyph)
+{
+ return glyph == G_2_PUNCTA_INCLINATA_ASCENDENS
+ || glyph == G_3_PUNCTA_INCLINATA_ASCENDENS
+ || glyph == G_4_PUNCTA_INCLINATA_ASCENDENS
+ || glyph == G_5_PUNCTA_INCLINATA_ASCENDENS
+ || glyph == G_PUNCTUM_INCLINATUM;
+}
+
+static __inline bool is_puncta_descendens(char glyph)
+{
+ return glyph == G_2_PUNCTA_INCLINATA_DESCENDENS
+ || glyph == G_3_PUNCTA_INCLINATA_DESCENDENS
+ || glyph == G_4_PUNCTA_INCLINATA_DESCENDENS
+ || glyph == G_5_PUNCTA_INCLINATA_DESCENDENS
+ || glyph == G_PUNCTUM_INCLINATUM;
+}
+
+/*
+ *
+ * A function that will be called several times: it adds an element to the
+ * current element current_element: the current_element in the determination,
+ * it will be updated to the element that we will add first_glyph: the
+ * first_glyph of the element that we will add current_glyph: the last glyph
+ * that will be in the element
+ *
+ */
+
+static void close_element(gregorio_element **current_element,
+ gregorio_glyph **const first_glyph,
+ const gregorio_glyph *const current_glyph)
+{
+ gregorio_add_element(current_element, *first_glyph);
+ if (*first_glyph && (*first_glyph)->previous) {
+ (*first_glyph)->previous->next = NULL;
+ (*first_glyph)->previous = NULL;
+ }
+ *first_glyph = current_glyph->next;
+}
+
+/*
+ *
+ * inline function to automatically do two or three things
+ *
+ */
+static __inline void cut_before(gregorio_glyph *current_glyph,
+ gregorio_glyph **first_glyph,
+ gregorio_glyph **previous_glyph,
+ gregorio_element **current_element)
+{
+ if (*first_glyph != current_glyph) {
+ close_element(current_element, first_glyph, current_glyph);
+ /* yes, this is changing value close_element sets for first_glyph */
+ *first_glyph = current_glyph;
+ *previous_glyph = current_glyph;
+ }
+}
+
+/*
+ *
+ * The big function of the file, but rather simple I think.
+ *
+ */
+
+static gregorio_element *gabc_det_elements_from_glyphs(
+ gregorio_glyph *current_glyph)
+{
+ /* the last element we have successfully added to the list of elements */
+ gregorio_element *current_element = NULL;
+ /* the first element, that we will return at the end. We have to consider
+ * it because the gregorio_element struct does not have previous_element
+ * element. */
+ gregorio_element *first_element = NULL;
+ /* the first_glyph of the element that we are currently determining */
+ gregorio_glyph *first_glyph = current_glyph;
+ /* the last real (GRE_GLYPH) that we have processed, often the same as
+ * first_glyph */
+ gregorio_glyph *previous_glyph = current_glyph;
+ /* a char that is necessary to determine some cases */
+ bool do_not_cut = false;
+ /* a char that is necesarry to determine the type of the current_glyph */
+ char current_glyph_type;
+
+ if (!current_glyph) {
+ return NULL;
+ }
+ /* first we go to the first glyph in the chained list of glyphs (maybe to
+ * suppress ?) */
+ gregorio_go_to_first_glyph(&current_glyph);
+
+ while (current_glyph) {
+ if (current_glyph->type != GRE_GLYPH) {
+ /* we ignore flats and naturals, except if they are alone */
+ if (current_glyph->type == GRE_NATURAL
+ || current_glyph->type == GRE_FLAT
+ || current_glyph->type == GRE_SHARP) {
+ if (!current_glyph->next) {
+ first_element = current_element;
+ close_element(&current_element, &first_glyph, current_glyph);
+ }
+ current_glyph = current_glyph->next;
+ continue;
+ }
+ /* we must not cut after a zero_width_space */
+ if (current_glyph->type == GRE_SPACE
+ && current_glyph->u.misc.unpitched.info.space == SP_ZERO_WIDTH) {
+ if (!current_glyph->next) {
+ close_element(&current_element, &first_glyph, current_glyph);
+ }
+ current_glyph = current_glyph->next;
+ do_not_cut = true;
+ continue;
+ }
+ /* we must not cut after a zero_width_space */
+ if (current_glyph->type == GRE_TEXVERB_GLYPH) {
+ if (!current_glyph->next) {
+ close_element(&current_element, &first_glyph, current_glyph);
+ }
+ current_glyph = current_glyph->next;
+ continue;
+ }
+ /* clef change or space or end of line */
+ cut_before(current_glyph, &first_glyph, &previous_glyph,
+ &current_element);
+ /* if statement to make neumatic cuts not appear in elements, as
+ * there is always one between elements */
+ if (current_glyph->type != GRE_SPACE
+ || current_glyph->u.misc.unpitched.info.space != SP_NEUMATIC_CUT)
+ /* clef change or space other thant neumatic cut */
+ {
+ if (!first_element) {
+ first_element = current_element;
+ }
+ gregorio_add_misc_element(&current_element, current_glyph->type,
+ current_glyph->u.misc,
+ current_glyph->texverb);
+ }
+ first_glyph = current_glyph->next;
+ previous_glyph = current_glyph->next;
+ current_glyph->texverb = NULL;
+ gregorio_free_one_glyph(&current_glyph);
+ continue;
+ }
+
+ if (is_puncta_ascendens(current_glyph->type)) {
+ current_glyph_type = G_PUNCTA_ASCENDENS;
+ } else {
+ if (is_puncta_descendens(current_glyph->type)) {
+ current_glyph_type = G_PUNCTA_DESCENDENS;
+ } else {
+ current_glyph_type = current_glyph->type;
+ }
+ }
+ switch (current_glyph_type) {
+ case G_PUNCTA_ASCENDENS:
+ if (!do_not_cut) {
+ cut_before(current_glyph, &first_glyph, &previous_glyph,
+ &current_element);
+ do_not_cut = true;
+ } else {
+ previous_glyph = current_glyph;
+ }
+ break;
+ case G_PUNCTA_DESCENDENS:
+ /* we don't cut before, so we don't do anything */
+ if (do_not_cut) {
+ do_not_cut = false;
+ }
+ break;
+ case G_ONE_NOTE:
+ if (current_glyph->u.notes.first_note
+ && (current_glyph->u.notes.first_note->u.note.shape == S_STROPHA
+ || current_glyph->u.notes.first_note->u.note.shape == S_VIRGA
+ || current_glyph->u.notes.first_note->u.note.shape == S_VIRGA_REVERSA)) {
+ /* we determine the last pitch */
+ char last_pitch;
+ gregorio_note *tmp_note;
+ tmp_note = previous_glyph->u.notes.first_note;
+ while (tmp_note->next) {
+ tmp_note = tmp_note->next;
+ }
+ last_pitch = tmp_note->u.note.pitch;
+ if (current_glyph->u.notes.first_note->u.note.pitch == last_pitch) {
+ previous_glyph = current_glyph;
+ break;
+ }
+ }
+ /* else we fall in the default case */
+ default:
+ if (do_not_cut) {
+ do_not_cut = false;
+ } else {
+ cut_before(current_glyph, &first_glyph, &previous_glyph,
+ &current_element);
+ }
+ }
+ /*
+ * we must determine the first element, that we will return
+ */
+ if (!first_element && current_element) {
+ first_element = current_element;
+ }
+ if (!current_glyph->next) {
+ close_element(&current_element, &first_glyph, current_glyph);
+ }
+ current_glyph = current_glyph->next;
+ } /* end of while */
+
+ /*
+ * we must determine the first element, that we will return
+ */
+ if (!first_element && current_element) {
+ first_element = current_element;
+ }
+ return first_element;
+}
+
+/*
+ *
+ * Two "hat" functions, they permit to have a good API. They amost don't do
+ * anything except calling the det_elements_from_glyphs.
+ *
+ * All those functions change the current_key, according to the possible new
+ * values (with key changes)
+ *
+ */
+
+static gregorio_element *gabc_det_elements_from_notes(
+ gregorio_note *current_note, int *current_key)
+{
+ gregorio_element *final = NULL;
+ gregorio_glyph *tmp = gabc_det_glyphs_from_notes(current_note, current_key);
+ final = gabc_det_elements_from_glyphs(tmp);
+ return final;
+}
+
+gregorio_element *gabc_det_elements_from_string(char *const str, int *const current_key,
+ char *macros[10], gregorio_scanner_location *const loc)
+{
+ gregorio_element *final;
+ gregorio_note *tmp;
+ tmp = gabc_det_notes_from_string(str, macros, loc);
+ final = gabc_det_elements_from_notes(tmp, current_key);
+ return final;
+}
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-glyphs-determination.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-glyphs-determination.c
new file mode 100644
index 00000000000..90e1853eaca
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-glyphs-determination.c
@@ -0,0 +1,991 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <assert.h>
+#include "bool.h"
+#include "struct.h"
+#include "messages.h"
+
+#include "gabc.h"
+
+static __inline gregorio_scanner_location *copy_note_location(
+ const gregorio_note *const note, gregorio_scanner_location *const loc)
+{
+ loc->first_line = note->src_line;
+ loc->first_column = note->src_column;
+ loc->first_offset = note->src_offset;
+ loc->last_line = note->src_line;
+ loc->last_column = note->src_column;
+ loc->last_offset = note->src_offset;
+ return loc;
+}
+
+/****************************
+ *
+ * First see the comments of
+ * gabc_det_glyphs_from_notes. This function is used when
+ * we have finished to determine a glyph. We have the last glyph that
+ * have been added: last_glyph. The glyph we want to add is given by
+ * glyph_type and liquescentia.
+ *
+ * The glyph we want to add goes from first_note to current_note, we
+ * isolate these notes from the notes that won't be in the glyph, and
+ * we add the glyph to the list_of_glyphs.
+ *
+****************************/
+
+static void close_glyph(gregorio_glyph **last_glyph,
+ gregorio_glyph_type glyph_type, gregorio_note **first_note,
+ gregorio_liquescentia liquescentia, gregorio_note *current_note)
+{
+ gregorio_scanner_location loc;
+ /* a variable necessary for the patch for G_BIVIRGA & co. */
+ gregorio_note *added_notes = NULL;
+
+ /* patch to have good glyph type in the case where a glyph ends by a note
+ * with shape S_QUADRATUM */
+ if (glyph_type == G_PES_QUADRATUM_FIRST_PART
+ || glyph_type == G_PES_QUILISMA_QUADRATUM_FIRST_PART) {
+ glyph_type = G_PUNCTUM;
+ }
+
+ gregorio_add_glyph(last_glyph, glyph_type, *first_note, liquescentia);
+ if (current_note->next) {
+ current_note->next->previous = NULL;
+ *first_note = current_note->next;
+ current_note->next = NULL;
+ }
+ /* here we "patch" the structure for bivirga, tristropha, etc. */
+ /* the idea is not to have a S_BIVIRGA in the shape of the note (which is
+ * dirty) but rather a G_BIVIRGA in the glyph (which is the case now) and
+ * two virgas */
+
+ if (glyph_type == G_BIVIRGA || glyph_type == G_DISTROPHA
+ || glyph_type == G_TRIVIRGA || glyph_type == G_TRISTROPHA
+ || glyph_type == G_DISTROPHA_AUCTA
+ || glyph_type == G_TRISTROPHA_AUCTA) {
+ gregorio_go_to_first_note(&current_note);
+ while (current_note) {
+ if (current_note->type == GRE_NOTE) {
+ switch (current_note->u.note.shape) {
+ case S_TRIVIRGA:
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note,
+ copy_note_location(current_note, &loc));
+ case S_BIVIRGA:
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note,
+ copy_note_location(current_note, &loc));
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_VIRGA, current_note->signs,
+ current_note->u.note.liquescentia, current_note,
+ copy_note_location(current_note, &loc));
+ break;
+ case S_TRISTROPHA:
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA,
+ current_note,
+ copy_note_location(current_note, &loc));
+ case S_DISTROPHA:
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA,
+ current_note,
+ copy_note_location(current_note, &loc));
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_STROPHA, current_note->signs,
+ current_note->u.note.liquescentia, current_note,
+ copy_note_location(current_note, &loc));
+ break;
+ case S_TRISTROPHA_AUCTA:
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA,
+ current_note,
+ copy_note_location(current_note, &loc));
+ case S_DISTROPHA_AUCTA:
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA,
+ current_note,
+ copy_note_location(current_note, &loc));
+ gregorio_add_note(&added_notes, current_note->u.note.pitch,
+ S_STROPHA_AUCTA, current_note->signs,
+ current_note->u.note.liquescentia, current_note,
+ copy_note_location(current_note, &loc));
+ break;
+ default:
+ break;
+ }
+ }
+ /* this is the case of two separate virga that have been spotted
+ * as a bivirga */
+ if (!added_notes) {
+ break;
+ }
+ /* now we have what we want, we set up the links and free the old
+ * note */
+ if (current_note->next) {
+ current_note->next->previous = added_notes;
+ added_notes->next = current_note->next;
+ }
+ gregorio_go_to_first_note(&added_notes);
+ if (current_note->previous) {
+ current_note->previous->next = added_notes;
+ added_notes->previous = current_note->previous;
+ }
+ if (!current_note->previous && !current_note->next) {
+ current_note = added_notes;
+ break;
+ } else {
+ gregorio_free_one_note(&current_note);
+ /* automatically sets first_note to the next note */
+ }
+ }
+ gregorio_go_to_first_note(&current_note);
+ /* finally we set the just added glyph first_note to current_note */
+ (*last_glyph)->u.notes.first_note = current_note;
+ }
+}
+
+/* a small function to automatically determine the pitch of a custo : it is
+ * the pitch of the next note, but we must take care of the clef changes, as
+ * custo are (normally and for now) only present before clef changes. */
+/* TODO: there may be a side effect with the flated keys... */
+
+static char gabc_determine_custo_pitch(gregorio_note *current_note,
+ int current_key)
+{
+ int pitch_difference = 0;
+ int newkey;
+ while (current_note) {
+ if (current_note->type == GRE_C_KEY_CHANGE
+ || current_note->type == GRE_C_KEY_CHANGE_FLATED) {
+ newkey = gregorio_calculate_new_key(C_KEY,
+ current_note->u.note.pitch - '0');
+ pitch_difference = newkey - current_key;
+ }
+ if (current_note->type == GRE_F_KEY_CHANGE
+ || current_note->type == GRE_F_KEY_CHANGE_FLATED) {
+ newkey = gregorio_calculate_new_key(F_KEY,
+ current_note->u.note.pitch - '0');
+ pitch_difference = newkey - current_key;
+ }
+ if (current_note->type == GRE_NOTE) {
+ pitch_difference =
+ (int) current_note->u.note.pitch - pitch_difference;
+ while (pitch_difference < LOWEST_PITCH) {
+ pitch_difference += 7;
+ }
+ while (pitch_difference > HIGHEST_PITCH) {
+ pitch_difference -= 7;
+ }
+ assert(pitch_difference >= LOWEST_PITCH
+ && pitch_difference <= HIGHEST_PITCH);
+ return (char) pitch_difference;
+ }
+ current_note = current_note->next;
+ }
+ return DUMMY_PITCH;
+}
+
+/****************************
+ *
+ * This function is the basis of all the determination of glyphs. The
+ * phylosophy of the function is to say : We have a glyph that we have
+ * determined, and we have the following note, can we "add" it to the
+ * glyph, or will it be the first note of another glyph ?
+ *
+ * current_glyph_type is the type of the current_glyph (current_glyph
+ * as meant in gabc_det_glyphs_from_notes). curent_pitch
+ * is the height of the note that we want to "add" to the glyph.
+ * last_pitch is the height of the last note of current_glyph. shape
+ * is the shape of the note we want to "add" to the glyph.
+ *
+ * The function returns a char, which meaning is explained below.
+ *
+ * end_of_glyph is a pointer to the result of the determination, here
+ * are the meanings :
+ *
+ * DET_NO_END: we have successfully added the note to the glyph, and
+ * we return the new type of the glyph. We may again add notes to the
+ * glyph.
+ *
+ * DET_END_OF_PREVIOUS: we have not been able to add the note to the
+ * glyph, so we will have to close the glyph.
+ *
+ * DET_END_OF_CURRENT: we have been able to add the note to the glyph,
+ * but we won't be able to add more notes to the glyph, we can close
+ * it. The new type is returned.
+
+ * DET_END_OF_BOTH: we have'nt been able to add the note to the glyph,
+ * and we won't be able to add notes to the new glyph. This special
+ * case is quite rare, we use it for trivirga, tristropha, etc.
+
+ * When we encouter a S_QUADRATUM (or S_QUILISMA_QUADRATUM), we build
+ * a new glyph with the (temporary) shape G_PES_QUADRATUM_FIRST_PART
+ * (or G_PES_QUILISMA_QUADRATUM_FIRST_PART), and we wait for the next
+ * note.
+ *
+****************************/
+
+static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type,
+ char current_pitch, char last_pitch, gregorio_shape shape,
+ gregorio_liquescentia liquescentia,
+ gregorio_note *current_glyph_first_note,
+ gabc_determination * end_of_glyph)
+{
+
+ /* next glyph type is the type of the glyph that will be returned (the
+ * new type of the glyph with the note added to it, or the type of the
+ * new glyph with the note alone. */
+ gregorio_glyph_type next_glyph_type = G_UNDETERMINED;
+
+ *end_of_glyph = DET_NO_END;
+
+ /* here we separate notes that would be logically in the same glyph
+ * but that are too far to be so */
+ if (last_pitch) {
+ if (current_pitch - last_pitch > MAX_INTERVAL
+ || current_pitch - last_pitch < -MAX_INTERVAL) {
+ current_glyph_type = G_UNDETERMINED;
+ }
+ }
+
+ switch (shape) {
+ case S_PUNCTUM_CAVUM:
+ case S_LINEA_PUNCTUM:
+ case S_LINEA_PUNCTUM_CAVUM:
+ case S_LINEA:
+ next_glyph_type = G_PUNCTUM;
+ *end_of_glyph = DET_END_OF_BOTH;
+ break;
+ case S_PUNCTUM:
+ /*
+ * we determine here the shape of the thing if it is made of puncta
+ */
+ if (current_pitch == last_pitch) {
+ next_glyph_type = G_PUNCTUM;
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ break;
+ }
+ switch (current_glyph_type) {
+ case G_PUNCTUM:
+ if (current_pitch > last_pitch) {
+ next_glyph_type = G_PODATUS;
+ } else {
+ next_glyph_type = G_FLEXA;
+ }
+ break;
+ case G_PODATUS:
+ if (current_pitch > last_pitch) {
+ if (current_glyph_first_note->u.note.shape == S_PUNCTUM &&
+ current_glyph_first_note->u.note.liquescentia !=
+ L_INITIO_DEBILIS) {
+ next_glyph_type = G_SCANDICUS;
+ *end_of_glyph = DET_END_OF_CURRENT;
+ } else {
+ next_glyph_type = G_PUNCTUM;
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ }
+ } else {
+ next_glyph_type = G_TORCULUS;
+ }
+ break;
+ case G_PES_QUADRATUM_FIRST_PART:
+ if (current_pitch > last_pitch) {
+ next_glyph_type = G_PES_QUADRATUM;
+ *end_of_glyph = DET_END_OF_CURRENT;
+ } else {
+ next_glyph_type = G_FLEXA;
+ }
+ break;
+ case G_PES_QUILISMA_QUADRATUM_FIRST_PART:
+ if (current_pitch > last_pitch) {
+ next_glyph_type = G_PES_QUADRATUM;
+ *end_of_glyph = DET_END_OF_CURRENT;
+ } else {
+ next_glyph_type = G_PUNCTUM;
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ }
+ break;
+ case G_VIRGA_STRATA:
+ if (current_pitch > last_pitch) {
+ next_glyph_type = G_SALICUS;
+ *end_of_glyph = DET_END_OF_CURRENT;
+ } else {
+ next_glyph_type = G_PUNCTUM;
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ }
+ break;
+ case G_FLEXA:
+ if (current_pitch > last_pitch) {
+ next_glyph_type = G_PORRECTUS;
+ } else {
+ *end_of_glyph = DET_END_OF_CURRENT;
+ next_glyph_type = G_ANCUS;
+ }
+ break;
+ case G_TORCULUS:
+ if (current_pitch > last_pitch) {
+ next_glyph_type = G_TORCULUS_RESUPINUS;
+ } else if (liquescentia == L_DEMINUTUS) {
+ *end_of_glyph = DET_END_OF_CURRENT;
+ next_glyph_type = G_TORCULUS_LIQUESCENS;
+ } else {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ }
+ break;
+ case G_TORCULUS_RESUPINUS:
+ if (current_pitch > last_pitch) {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ } else {
+ *end_of_glyph = DET_END_OF_CURRENT;
+ next_glyph_type = G_TORCULUS_RESUPINUS_FLEXUS;
+ }
+ break;
+ case G_PORRECTUS:
+ if (current_pitch > last_pitch) {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ } else {
+ *end_of_glyph = DET_END_OF_CURRENT;
+ next_glyph_type = G_PORRECTUS_FLEXUS;
+ }
+ break;
+ default:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ break;
+ }
+ break;
+ case S_ORISCUS:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ break;
+ case S_ORISCUS_AUCTUS:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ break;
+ case S_ORISCUS_DEMINUTUS:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ break;
+ case S_QUILISMA:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ break;
+ case S_VIRGA:
+ if (current_glyph_type == G_VIRGA && last_pitch == current_pitch) {
+ next_glyph_type = G_BIVIRGA;
+ } else {
+ if (current_glyph_type == G_BIVIRGA && last_pitch == current_pitch) {
+ next_glyph_type = G_TRIVIRGA;
+ } else {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_VIRGA;
+ }
+ }
+ break;
+ case S_VIRGA_REVERSA:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_VIRGA_REVERSA;
+ break;
+ case S_BIVIRGA:
+ if (current_glyph_type == G_VIRGA && last_pitch == current_pitch) {
+ next_glyph_type = G_TRIVIRGA;
+ } else {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_BIVIRGA;
+ }
+ break;
+ case S_TRIVIRGA:
+ *end_of_glyph = DET_END_OF_BOTH;
+ next_glyph_type = G_TRIVIRGA;
+ break;
+ case S_QUADRATUM:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PES_QUADRATUM_FIRST_PART;
+ break;
+ case S_QUILISMA_QUADRATUM:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PES_QUILISMA_QUADRATUM_FIRST_PART;
+ break;
+ case S_ORISCUS_SCAPUS:
+ if (current_glyph_type == G_PUNCTUM && last_pitch < current_pitch) {
+ next_glyph_type = G_VIRGA_STRATA;
+ } else {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM;
+ }
+ break;
+ case S_PUNCTUM_INCLINATUM:
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ /*
+ * Warning : this part of the code is specific to the
+ * declarations of the header file
+ */
+ if (current_glyph_type > G_PUNCTA_INCLINATA) {
+ /*
+ * meaning that the previous glyph is not a combination of puncta
+ * inclinata, see header file for details
+ */
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM_INCLINATUM;
+ break;
+ }
+ if (current_pitch == last_pitch) {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_PUNCTUM_INCLINATUM;
+ break;
+ }
+ switch (current_glyph_type) {
+ case G_PUNCTUM_INCLINATUM:
+ if (last_pitch < current_pitch) {
+ next_glyph_type = G_2_PUNCTA_INCLINATA_ASCENDENS;
+ } else {
+ next_glyph_type = G_2_PUNCTA_INCLINATA_DESCENDENS;
+ }
+ break;
+ case G_2_PUNCTA_INCLINATA_ASCENDENS:
+ if (last_pitch < current_pitch) {
+ next_glyph_type = G_3_PUNCTA_INCLINATA_ASCENDENS;
+ } else {
+ next_glyph_type = G_TRIGONUS;
+ }
+ break;
+ case G_3_PUNCTA_INCLINATA_ASCENDENS:
+ if (last_pitch < current_pitch) {
+ next_glyph_type = G_4_PUNCTA_INCLINATA_ASCENDENS;
+ } else {
+ next_glyph_type = G_PUNCTA_INCLINATA;
+ }
+ break;
+ case G_4_PUNCTA_INCLINATA_ASCENDENS:
+ if (last_pitch < current_pitch) {
+ next_glyph_type = G_5_PUNCTA_INCLINATA_ASCENDENS;
+ } else {
+ next_glyph_type = G_PUNCTA_INCLINATA;
+ }
+ break;
+ case G_2_PUNCTA_INCLINATA_DESCENDENS:
+ if (last_pitch < current_pitch) {
+ next_glyph_type = G_TRIGONUS;
+ } else {
+ next_glyph_type = G_3_PUNCTA_INCLINATA_DESCENDENS;
+ }
+ break;
+ case G_3_PUNCTA_INCLINATA_DESCENDENS:
+ if (last_pitch < current_pitch) {
+ next_glyph_type = G_PUNCTA_INCLINATA;
+ } else {
+ next_glyph_type = G_4_PUNCTA_INCLINATA_DESCENDENS;
+ }
+ break;
+ case G_4_PUNCTA_INCLINATA_DESCENDENS:
+ if (last_pitch < current_pitch) {
+ next_glyph_type = G_PUNCTA_INCLINATA;
+ } else {
+ next_glyph_type = G_5_PUNCTA_INCLINATA_DESCENDENS;
+ }
+ break;
+ default:
+ next_glyph_type = G_PUNCTA_INCLINATA;
+ break;
+ }
+ break;
+ case S_STROPHA:
+ if (last_pitch != current_pitch) {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_STROPHA;
+ break;
+ }
+ switch (current_glyph_type) {
+ case G_STROPHA:
+ next_glyph_type = G_DISTROPHA;
+ break;
+ case G_DISTROPHA:
+ *end_of_glyph = DET_END_OF_CURRENT;
+ next_glyph_type = G_TRISTROPHA;
+ break;
+ default:
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_STROPHA;
+ break;
+ }
+ break;
+ case S_DISTROPHA:
+ if (last_pitch == current_pitch && current_glyph_type == G_STROPHA) {
+ *end_of_glyph = DET_END_OF_CURRENT;
+ next_glyph_type = G_TRISTROPHA;
+ } else {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ next_glyph_type = G_DISTROPHA;
+ }
+ break;
+ case S_TRISTROPHA:
+ *end_of_glyph = DET_END_OF_BOTH;
+ next_glyph_type = G_TRISTROPHA;
+ break;
+ default:
+ break;
+ }
+ /* end of the main switch */
+
+ if (current_glyph_type == G_UNDETERMINED) {
+ /*
+ * means that this is the first glyph or that the previous glyph has
+ * already been added
+ */
+ if (*end_of_glyph == DET_END_OF_PREVIOUS) {
+ *end_of_glyph = DET_NO_END;
+ } else {
+ if (*end_of_glyph == DET_END_OF_BOTH) {
+ *end_of_glyph = DET_END_OF_CURRENT;
+ }
+ }
+ }
+
+ /*
+ * WARNING : Ugly section of the code, just some kind of patch for it to work
+ * with fonts that can't handle large intervals.
+ */
+ /* here we separate notes that would be logically in the same glyph
+ * but that are too far to be so, we already said to the function that
+ * it was not the same glyph, there we must say that the previous
+ * glyph has ended. */
+ if (last_pitch) {
+ if (current_pitch - last_pitch > MAX_INTERVAL
+ || current_pitch - last_pitch < -MAX_INTERVAL) {
+ if (*end_of_glyph == DET_END_OF_CURRENT
+ || *end_of_glyph == DET_END_OF_BOTH) {
+ *end_of_glyph = DET_END_OF_BOTH;
+ } else {
+ *end_of_glyph = DET_END_OF_PREVIOUS;
+ }
+ }
+ }
+
+ return next_glyph_type;
+}
+
+/****************************
+ *
+ * Function called with a list of gregorio_notes as argument, this
+ * list is determined from gabc notation by the function
+ * gabc_det_notes_from_string.
+ *
+ * In this function we create a list of glyphs, by determining their
+ * type according to the sequence of notes (we look at their height,
+ * shape, etc.). Each glyph has a pointer gregorio_note *first_note
+ * that will be filled with the good note (and notes will be cut as
+ * explained in the comments on close_glyph function).
+ *
+ * Here is how it works :
+ * current_glyph is the glyph we are currently determining, that is to
+ * say a glyph whose type may change according to the note we will add
+ * to it.
+ * current_note is the note we are currently dealing with.
+ * Let's take an example, if the list of notes is ab, the first step
+ * (current_glyph: undetermined, current_note: a) will be to add a to
+ * nothing, that will give a glyph "punctum" containing only one note:
+ * a. In the second step (current_glyph: punctum, current_note: b) we
+ * transform the glyph in "pes".
+ * For special notes like a key change or something, we stop the
+ * determination of the current glyph, we delete the note and we add
+ * it as a glyph.
+ *
+ * When we determine the glyphs we can encounter the shapes
+ * S_QUADRATUM and S_QUILISMA_QUADRATUM, which means that the
+ * corresponding note is the first note of a pes quadratum (it can
+ * have the shape quilisma for very rare forms). But these shapes must
+ * not appear in the final form of the score, and we transform them
+ * respectively in punctum and quilisma (and the glyph type must be
+ * pes_quadratum, but it is done in gregorio_add_note_to_a_glyph).
+ *
+****************************/
+
+/* this function updates current_key with the new values (with clef changes) */
+
+gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note,
+ int *current_key)
+{
+ /* the first note of the current glyph, to be able to close it well:
+ * later we will cut the link (next_notes and previous_note) between
+ * this note and the previous one */
+ gregorio_note *current_glyph_first_note = current_note;
+
+ /* the last glyph we have totally determined. It is automatically
+ * updated by close_glyph(). */
+ gregorio_glyph *last_glyph = NULL;
+
+ /* type of the glyph we are currently determining */
+ gregorio_glyph_type current_glyph_type = G_UNDETERMINED;
+ gregorio_glyph_type next_glyph_type = G_UNDETERMINED;
+ char last_pitch = USELESS_VALUE;
+ /* a variable for the signs of bars and to tell if a key is flatted or
+ * not */
+ gregorio_note *next_note = NULL;
+
+ /* determination of end of glyphs, see comments on
+ * gregorio_add_note_to_a_glyph */
+ gabc_determination end_of_glyph = DET_NO_END;
+
+ /* a char representing the liquescentia of the current glyph */
+ gregorio_liquescentia liquescentia = L_NO_LIQUESCENTIA;
+
+ if (current_note == NULL) {
+ return NULL;
+ }
+
+ gregorio_go_to_first_note(&current_note);
+
+ while (current_note) {
+ next_note = current_note->next;
+ if (current_note->type != GRE_NOTE) {
+ gregorio_type type = current_note->type;
+ char pitch = USELESS_VALUE;
+ bool flat = false;
+ bool force = false;
+ gregorio_sign sign = _NO_SIGN;
+
+ if (current_glyph_type != G_UNDETERMINED) {
+ close_glyph(&last_glyph, next_glyph_type,
+ &current_glyph_first_note, liquescentia,
+ current_note->previous);
+ current_glyph_type = G_UNDETERMINED;
+ liquescentia = L_NO_LIQUESCENTIA;
+ }
+
+ switch (type) {
+ case GRE_C_KEY_CHANGE:
+ pitch = current_note->u.note.pitch;
+ *current_key = gregorio_calculate_new_key(C_KEY, pitch - '0');
+ break;
+
+ case GRE_F_KEY_CHANGE:
+ pitch = current_note->u.note.pitch;
+ *current_key = gregorio_calculate_new_key(F_KEY, pitch - '0');
+ break;
+
+ case GRE_C_KEY_CHANGE_FLATED:
+ pitch = current_note->u.note.pitch;
+ *current_key = gregorio_calculate_new_key(C_KEY, pitch - '0');
+ type = GRE_C_KEY_CHANGE;
+ flat = true;
+ break;
+
+ case GRE_F_KEY_CHANGE_FLATED:
+ pitch = current_note->u.note.pitch;
+ *current_key = gregorio_calculate_new_key(F_KEY, pitch - '0');
+ type = GRE_F_KEY_CHANGE;
+ flat = true;
+ break;
+
+ case GRE_CUSTOS:
+ pitch = gabc_determine_custo_pitch(current_note->next,
+ *current_key);
+ break;
+
+ case GRE_MANUAL_CUSTOS:
+ pitch = current_note->u.note.pitch;
+ type = GRE_CUSTOS;
+ force = true;
+ break;
+
+ case GRE_BAR:
+ /* we calculate the signs of the bars */
+ if (current_note->signs == _V_EPISEMUS) {
+ sign = _V_EPISEMUS;
+ } else {
+ sign = current_note->special_sign;
+ }
+ if (current_note->h_episemus_above) {
+ if (sign == _V_EPISEMUS) {
+ sign = _V_EPISEMUS_BAR_H_EPISEMUS;
+ } else {
+ sign = _BAR_H_EPISEMUS;
+ }
+ }
+ break;
+
+ case GRE_FLAT:
+ case GRE_SHARP:
+ case GRE_NATURAL:
+ pitch = current_note->u.note.pitch;
+ break;
+
+ default:
+ /* do nothing */
+ break;
+ }
+
+ if (pitch == USELESS_VALUE) {
+ gregorio_add_unpitched_element_as_glyph(&last_glyph, type,
+ current_note->u.other, sign, current_note->texverb);
+ } else {
+ gregorio_add_pitched_element_as_glyph(&last_glyph, type, pitch,
+ flat, force, current_note->texverb);
+ }
+ current_glyph_first_note = current_note->next;
+ current_note->texverb = NULL;
+ gregorio_free_one_note(&current_note);
+ last_pitch = USELESS_VALUE;
+ continue;
+ }
+
+ /*
+ * first we do what must be done with liquescentia
+ */
+ if (is_initio_debilis(current_note->u.note.liquescentia)) {
+ /*
+ * meaning that the note is an initio debilis, maybe more
+ */
+ if (current_glyph_type != G_UNDETERMINED) {
+ /*
+ * if it is not the first glyph
+ */
+ close_glyph(&last_glyph, current_glyph_type,
+ &current_glyph_first_note,
+ liquescentia, current_note->previous);
+ current_glyph_type = G_UNDETERMINED;
+ }
+ liquescentia = L_INITIO_DEBILIS;
+ }
+
+ next_glyph_type =
+ gregorio_add_note_to_a_glyph(current_glyph_type,
+ current_note->u.note.pitch, last_pitch,
+ current_note->u.note.shape,
+ current_note->u.note.liquescentia,
+ current_glyph_first_note, &end_of_glyph);
+
+ /* patch to have good shapes in the special cases of pes quadratum and
+ * pes quilisma quadratum. */
+ switch (current_note->u.note.shape) {
+ case S_QUADRATUM:
+ current_note->u.note.shape = S_PUNCTUM;
+ break;
+
+ case S_QUILISMA_QUADRATUM:
+ current_note->u.note.shape = S_QUILISMA;
+ break;
+
+ default:
+ /* do nothing */
+ break;
+ }
+
+ /* see comments on gregorio_add_note_to_a_glyph for the meaning of
+ * end_of_glyph */
+ switch (end_of_glyph) {
+ case DET_NO_END:
+ current_glyph_type = next_glyph_type;
+ /*
+ * we deal with liquescentia
+ */
+ if (is_liquescentia(current_note->u.note.liquescentia)) {
+ /* special cases of oriscus auctus, treated like normal oriscus
+ * in some cases. */
+ if (current_note->u.note.shape == S_ORISCUS_AUCTUS
+ && current_note->next
+ && current_note->next->type == GRE_NOTE
+ && current_note->next->u.note.pitch <
+ current_note->u.note.pitch) {
+ last_pitch = current_note->u.note.pitch;
+ current_note->u.note.shape = S_ORISCUS;
+ current_note->u.note.liquescentia = L_NO_LIQUESCENTIA;
+ current_note = next_note;
+ continue;
+ }
+ /* special cases of the punctum inclinatum deminutus and
+ * auctus */
+ if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) {
+ if (current_note->u.note.liquescentia == L_DEMINUTUS) {
+ current_note->u.note.shape =
+ S_PUNCTUM_INCLINATUM_DEMINUTUS;
+ }
+ if (current_note->u.note.liquescentia == L_AUCTA
+ || current_note->u.note.liquescentia ==
+ L_AUCTUS_DESCENDENS
+ || current_note->u.note.liquescentia ==
+ L_AUCTUS_ASCENDENS) {
+ current_note->u.note.shape =
+ S_PUNCTUM_INCLINATUM_AUCTUS;
+ }
+
+ if (current_note->next
+ && current_note->next->type == GRE_NOTE
+ && current_note->next->u.note.shape ==
+ S_PUNCTUM_INCLINATUM
+ && current_note->next->u.note.liquescentia ==
+ L_DEMINUTUS) {
+ last_pitch = current_note->u.note.pitch;
+ current_note = next_note;
+ continue;
+ }
+ }
+ if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) {
+ switch (current_note->u.note.liquescentia) {
+ case L_AUCTA:
+ case L_AUCTUS_DESCENDENS:
+ case L_AUCTUS_ASCENDENS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ current_note->u.note.shape =
+ S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS;
+ break;
+
+ default:
+ /* do nothing */
+ break;
+ }
+
+ if (current_note->next
+ && current_note->next->type == GRE_NOTE
+ && current_note->next->u.note.shape ==
+ S_PUNCTUM_INCLINATUM
+ && current_note->next->u.note.liquescentia ==
+ L_DEMINUTUS) {
+ last_pitch = current_note->u.note.pitch;
+ current_note = next_note;
+ continue;
+ }
+ }
+ liquescentia += current_note->u.note.liquescentia;
+ /* once again, only works with the good values in the header
+ * file */
+ close_glyph(&last_glyph, current_glyph_type,
+ &current_glyph_first_note, liquescentia, current_note);
+ current_glyph_type = G_UNDETERMINED;
+ liquescentia = L_NO_LIQUESCENTIA;
+ }
+ break;
+ case DET_END_OF_PREVIOUS:
+ if (current_note->previous)
+ {
+ /* we don't want to close previous glyph twice */
+ close_glyph(&last_glyph, current_glyph_type,
+ &current_glyph_first_note, liquescentia,
+ current_note->previous);
+ }
+ current_glyph_type = next_glyph_type;
+ liquescentia = L_NO_LIQUESCENTIA;
+ last_pitch = USELESS_VALUE;
+ /* we deal with liquescentia */
+ if (is_liquescentia(current_note->u.note.liquescentia))
+ /* not an initio debilis, because we considered it in the first
+ * part... */
+ {
+ /* special cases of the punctum inclinatum deminutus and
+ * auctus */
+ if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) {
+ if (current_note->u.note.liquescentia == L_DEMINUTUS) {
+ current_note->u.note.shape =
+ S_PUNCTUM_INCLINATUM_DEMINUTUS;
+ }
+ if (current_note->u.note.liquescentia == L_AUCTA
+ || current_note->u.note.liquescentia ==
+ L_AUCTUS_DESCENDENS
+ || current_note->u.note.liquescentia ==
+ L_AUCTUS_ASCENDENS) {
+ current_note->u.note.shape =
+ S_PUNCTUM_INCLINATUM_AUCTUS;
+ }
+ if (current_note->next
+ && current_note->next->type == GRE_NOTE
+ && current_note->next->u.note.shape ==
+ S_PUNCTUM_INCLINATUM
+ && current_note->next->u.note.liquescentia ==
+ L_DEMINUTUS) {
+ current_note = next_note;
+ continue;
+ }
+ }
+ if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) {
+ switch (current_note->u.note.liquescentia) {
+ case L_AUCTA:
+ case L_AUCTUS_DESCENDENS:
+ case L_AUCTUS_ASCENDENS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ current_note->u.note.shape =
+ S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS;
+ break;
+
+ default:
+ /* do nothing */
+ break;
+ }
+
+ if (current_note->next
+ && current_note->next->type == GRE_NOTE
+ && current_note->next->u.note.shape ==
+ S_PUNCTUM_INCLINATUM
+ && current_note->next->u.note.liquescentia ==
+ L_DEMINUTUS) {
+ current_note = next_note;
+ continue;
+ }
+ }
+ close_glyph(&last_glyph, current_glyph_type,
+ &current_glyph_first_note,
+ current_note->u.note.liquescentia, current_note);
+ current_glyph_type = G_UNDETERMINED;
+ }
+ break;
+ case DET_END_OF_CURRENT:
+ liquescentia += current_note->u.note.liquescentia;
+ /* once again, only works with the good values in the header file */
+ close_glyph(&last_glyph, next_glyph_type,
+ &current_glyph_first_note, liquescentia, current_note);
+ current_glyph_type = G_UNDETERMINED;
+ liquescentia = L_NO_LIQUESCENTIA;
+ break;
+ default: /* case DET_END_OF_BOTH: */
+ if (current_note->previous)
+ {
+ /* we don't want to close previous glyph twice */
+ close_glyph(&last_glyph, current_glyph_type,
+ &current_glyph_first_note, liquescentia,
+ current_note->previous);
+ }
+ current_glyph_type = G_UNDETERMINED;
+ liquescentia = L_NO_LIQUESCENTIA;
+ close_glyph(&last_glyph, next_glyph_type,
+ &current_glyph_first_note,
+ current_note->u.note.liquescentia, current_note);
+ break;
+ }
+
+ if (!next_note && current_glyph_type != G_UNDETERMINED) {
+ /* we must end the determination here */
+ close_glyph(&last_glyph, current_glyph_type,
+ &current_glyph_first_note, liquescentia, current_note);
+ }
+
+ last_pitch = current_note->u.note.pitch;
+ current_note = next_note;
+ }
+ /* end of while */
+
+ gregorio_go_to_first_glyph(&last_glyph);
+ return last_glyph;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination-l.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination-l.c
new file mode 100644
index 00000000000..be6374b8e5c
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination-l.c
@@ -0,0 +1,9577 @@
+#line 2 "gabc/gabc-notes-determination-l.c"
+
+#line 4 "gabc/gabc-notes-determination-l.c"
+
+#define YY_INT_ALIGNED long int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer gabc_notes_determination__create_buffer
+#define yy_delete_buffer gabc_notes_determination__delete_buffer
+#define yy_flex_debug gabc_notes_determination__flex_debug
+#define yy_init_buffer gabc_notes_determination__init_buffer
+#define yy_flush_buffer gabc_notes_determination__flush_buffer
+#define yy_load_buffer_state gabc_notes_determination__load_buffer_state
+#define yy_switch_to_buffer gabc_notes_determination__switch_to_buffer
+#define yyin gabc_notes_determination_in
+#define yyleng gabc_notes_determination_leng
+#define yylex gabc_notes_determination_lex
+#define yylineno gabc_notes_determination_lineno
+#define yyout gabc_notes_determination_out
+#define yyrestart gabc_notes_determination_restart
+#define yytext gabc_notes_determination_text
+#define yywrap gabc_notes_determination_wrap
+#define yyalloc gabc_notes_determination_alloc
+#define yyrealloc gabc_notes_determination_realloc
+#define yyfree gabc_notes_determination_free
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 39
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE gabc_notes_determination_restart(gabc_notes_determination_in )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t gabc_notes_determination_leng;
+
+extern FILE *gabc_notes_determination_in, *gabc_notes_determination_out;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+ #define YY_LINENO_REWIND_TO(ptr)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up gabc_notes_determination_text. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ yy_size_t yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via gabc_notes_determination_restart()), so that the user can continue scanning by
+ * just pointing gabc_notes_determination_in at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when gabc_notes_determination_text is formed. */
+static char yy_hold_char;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t gabc_notes_determination_leng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow gabc_notes_determination_wrap()'s to do buffer switches
+ * instead of setting up a fresh gabc_notes_determination_in. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void gabc_notes_determination_restart (FILE *input_file );
+void gabc_notes_determination__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE gabc_notes_determination__create_buffer (FILE *file,int size );
+void gabc_notes_determination__delete_buffer (YY_BUFFER_STATE b );
+void gabc_notes_determination__flush_buffer (YY_BUFFER_STATE b );
+void gabc_notes_determination_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void gabc_notes_determination_pop_buffer_state (void );
+
+static void gabc_notes_determination_ensure_buffer_stack (void );
+static void gabc_notes_determination__load_buffer_state (void );
+static void gabc_notes_determination__init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER gabc_notes_determination__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE gabc_notes_determination__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE gabc_notes_determination__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE gabc_notes_determination__scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *gabc_notes_determination_alloc (yy_size_t );
+void *gabc_notes_determination_realloc (void *,yy_size_t );
+void gabc_notes_determination_free (void * );
+
+#define yy_new_buffer gabc_notes_determination__create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ gabc_notes_determination_ensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ gabc_notes_determination__create_buffer(gabc_notes_determination_in,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ gabc_notes_determination_ensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ gabc_notes_determination__create_buffer(gabc_notes_determination_in,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define gabc_notes_determination_wrap() 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *gabc_notes_determination_in = (FILE *) 0, *gabc_notes_determination_out = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int gabc_notes_determination_lineno;
+
+int gabc_notes_determination_lineno = 1;
+
+extern char *gabc_notes_determination_text;
+#define yytext_ptr gabc_notes_determination_text
+
+static yyconst flex_int32_t yy_nxt[][256] =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0
+ },
+
+ {
+ 25, 26, 26, 26, 26, 26, 26, 26, 26, 27,
+ 28, 26, 26, 27, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 29, 30, 26, 26, 26, 31, 26, 32,
+
+ 26, 26, 26, 26, 33, 34, 35, 36, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 37, 38,
+ 39, 40, 41, 26, 26, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 26, 43,
+ 26, 26, 44, 26, 26, 26, 45, 46, 26, 26,
+ 47, 48, 26, 26, 26, 49, 50, 51, 51, 52,
+ 51, 51, 53, 51, 51, 51, 51, 51, 51, 51,
+ 26, 54, 26, 55, 56, 57, 26, 26, 58, 59,
+ 26, 26, 60, 61, 26, 62, 63, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26
+ },
+
+ {
+ 25, 26, 26, 26, 26, 26, 26, 26, 26, 27,
+ 28, 26, 26, 27, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 29, 30, 26, 26, 26, 31, 26, 32,
+ 26, 26, 26, 26, 33, 34, 35, 36, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 37, 38,
+ 39, 40, 41, 26, 26, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 26, 43,
+
+ 26, 26, 44, 26, 26, 26, 45, 46, 26, 26,
+ 47, 48, 26, 26, 26, 49, 50, 51, 51, 52,
+ 51, 51, 53, 51, 51, 51, 51, 51, 51, 51,
+ 26, 54, 26, 55, 56, 57, 26, 26, 58, 59,
+ 26, 26, 60, 61, 26, 62, 63, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+ 26, 26, 26, 26, 26, 26
+ },
+
+ {
+ 25, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 65, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64
+ },
+
+ {
+ 25, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 65, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64
+
+ },
+
+ {
+ 25, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 65, 66, 66, 66, 66, 66, 66,
+
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66
+ },
+
+ {
+ 25, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 65, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66
+ },
+
+ {
+ 25, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 65, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67
+ },
+
+ {
+ 25, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 65, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67
+ },
+
+ {
+ 25, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 65, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68
+
+ },
+
+ {
+ 25, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 65, 68, 68, 68, 68, 68, 68,
+
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68
+ },
+
+ {
+ 25, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 65, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69
+ },
+
+ {
+ 25, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 65, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69
+ },
+
+ {
+ 25, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 65, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70
+ },
+
+ {
+ 25, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 65, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70
+
+ },
+
+ {
+ 25, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 72, 71, 71, 72, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71
+ },
+
+ {
+ 25, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 72, 71, 71, 72, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+
+ 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+ 71, 71, 71, 71, 71, 71
+ },
+
+ {
+ 25, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 65, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73
+ },
+
+ {
+ 25, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 65, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
+ 73, 73, 73, 73, 73, 73
+ },
+
+ {
+ 25, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 65, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74
+
+ },
+
+ {
+ 25, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 65, 74, 74, 74, 74, 74, 74,
+
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+ 74, 74, 74, 74, 74, 74
+ },
+
+ {
+ 25, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 65, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75
+ },
+
+ {
+ 25, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 65, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75
+ },
+
+ {
+ 25, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 65, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76
+ },
+
+ {
+ 25, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 65, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76
+
+ },
+
+ {
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
+ -25, -25, -25, -25, -25, -25
+ },
+
+ {
+ 25, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+
+ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26
+ },
+
+ {
+ 25, -27, -27, -27, -27, -27, -27, -27, -27, 77,
+ 77, -27, -27, 77, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27
+ },
+
+ {
+ 25, -28, -28, -28, -28, -28, -28, -28, -28, 77,
+ 77, -28, -28, 77, -28, -28, -28, -28, -28, -28,
+
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, -28, -28
+ },
+
+ {
+ 25, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29
+
+ },
+
+ {
+ 25, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 79, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 80, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78
+ },
+
+ {
+ 25, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+
+ -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, -31, -31
+ },
+
+ {
+ 25, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, 81, 81,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32
+ },
+
+ {
+ 25, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, 82,
+ 83, 84, 85, 86, 87, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33
+ },
+
+ {
+ 25, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+
+ -34, -34, -34, -34, -34, 88, 88, 88, 88, 88,
+ 88, 88, 88, 88, 88, 88, 88, 88, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, 88, 88, 88,
+ 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, -34, -34, -34, -34, -34
+
+ },
+
+ {
+ 25, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, 89, 89,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, -35, -35, -35, -35, -35
+ },
+
+ {
+ 25, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+
+ -36, -36, -36, -36, -36, -36, -36, 90, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+
+ -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36
+ },
+
+ {
+ 25, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, 91, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37
+ },
+
+ {
+ 25, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, 92,
+ 93, 94, 95, 96, 97, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38
+ },
+
+ {
+ 25, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, 98, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ 99, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39
+
+ },
+
+ {
+ 25, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40
+ },
+
+ {
+ 25, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+
+ -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
+ -41, -41, -41, -41, -41, -41
+ },
+
+ {
+ 25, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, 100, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+
+ -42, -42, -42, -42, -42, -42, 101, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, 102, -42, -42, 103, -42,
+ 104, 105, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ -42, -42, -42, -42, -42, -42
+ },
+
+ {
+ 25, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43
+ },
+
+ {
+ 25, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, -44, -44, -44
+
+ },
+
+ {
+ 25, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45
+ },
+
+ {
+ 25, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+
+ -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46
+ },
+
+ {
+ 25, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, -47, -47, -47, -47, -47
+ },
+
+ {
+ 25, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, 106, -48, 107,
+ -48, 108, -48, 109, -48, -48, -48, -48, -48, -48,
+ 110, 111, -48, -48, -48, -48, -48, 112, -48, -48,
+
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48
+ },
+
+ {
+ 25, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, 113, 113,
+ 113, 113, 113, 113, -49, -49, -49, -49, -49, -49,
+
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49
+
+ },
+
+ {
+ 25, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50
+ },
+
+ {
+ 25, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, 100, -51, -51, -51, -51,
+
+ -51, -51, -51, 114, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, 101, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, 102, -51, -51, 103, -51,
+ 104, 105, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+
+ -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51
+ },
+
+ {
+ 25, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, 100, -52, -52, -52, -52,
+ -52, -52, -52, 114, -52, -52, -52, -52, -52, 115,
+ 115, 115, 115, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+
+ -52, -52, -52, -52, -52, -52, 101, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, 116, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, 102, -52, -52, 103, -52,
+ 104, 105, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52
+ },
+
+ {
+ 25, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, 100, -53, -53, -53, -53,
+ -53, -53, -53, 114, -53, -53, -53, -53, -53, 115,
+ 115, 115, 115, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, 101, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, 116, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, 102, -53, -53, 103, -53,
+
+ 104, 105, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53
+ },
+
+ {
+ 25, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54
+
+ },
+
+ {
+ 25, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55
+ },
+
+ {
+ 25, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+
+ -56, -56, -56, -56, -56, -56, -56, -56, 117, 118,
+ 119, 120, 121, 122, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+
+ -56, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, -56, -56, -56, -56, -56
+ },
+
+ {
+ 25, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57
+ },
+
+ {
+ 25, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58
+ },
+
+ {
+ 25, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59
+
+ },
+
+ {
+ 25, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, 123, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, -60, -60, -60, -60, -60
+ },
+
+ {
+ 25, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+
+ -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
+ -61, -61, -61, -61, -61, -61
+ },
+
+ {
+ 25, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62, -62, -62, -62, -62,
+ -62, -62, -62, -62, -62, -62
+ },
+
+ {
+ 25, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
+ -63, -63, -63, -63, -63, -63
+ },
+
+ {
+ 25, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, -64, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124
+
+ },
+
+ {
+ 25, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65, -65, -65, -65, -65,
+ -65, -65, -65, -65, -65, -65
+ },
+
+ {
+ 25, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, -66, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125
+ },
+
+ {
+ 25, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, -67, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126
+ },
+
+ {
+ 25, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, -68, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127
+ },
+
+ {
+ 25, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, -69, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128
+
+ },
+
+ {
+ 25, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, -70, 129, 129, 129, 129, 129, 129,
+
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129
+ },
+
+ {
+ 25, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ -71, 130, 130, -71, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130
+ },
+
+ {
+ 25, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ 131, -72, -72, 131, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
+ -72, -72, -72, -72, -72, -72
+ },
+
+ {
+ 25, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, -73, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132
+ },
+
+ {
+ 25, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, -74, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133
+
+ },
+
+ {
+ 25, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, -75, 134, 134, 134, 134, 134, 134,
+
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134
+ },
+
+ {
+ 25, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, -76, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135
+ },
+
+ {
+ 25, -77, -77, -77, -77, -77, -77, -77, -77, 77,
+ 77, -77, -77, 77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, -77, -77, -77
+ },
+
+ {
+ 25, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ -78, -78, -78, -78, -78, -78
+ },
+
+ {
+ 25, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79
+
+ },
+
+ {
+ 25, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, 136, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80
+ },
+
+ {
+ 25, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
+ -81, -81, -81, -81, -81, -81
+ },
+
+ {
+ 25, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
+ -82, -82, -82, -82, -82, -82
+ },
+
+ {
+ 25, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83
+ },
+
+ {
+ 25, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84
+
+ },
+
+ {
+ 25, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85
+ },
+
+ {
+ 25, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+
+ -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
+ -86, -86, -86, -86, -86, -86
+ },
+
+ {
+ 25, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -87
+ },
+
+ {
+ 25, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
+ -88, -88, -88, -88, -88, -88
+ },
+
+ {
+ 25, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
+ -89, -89, -89, -89, -89, -89
+
+ },
+
+ {
+ 25, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90
+ },
+
+ {
+ 25, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+
+ -91, -91, -91, -91, -91, -91, -91, -91, -91, -91,
+ -91, -91, -91, -91, -91, -91
+ },
+
+ {
+ 25, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
+ -92, -92, -92, -92, -92, -92
+ },
+
+ {
+ 25, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93
+ },
+
+ {
+ 25, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
+ -94, -94, -94, -94, -94, -94
+
+ },
+
+ {
+ 25, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95
+ },
+
+ {
+ 25, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96
+ },
+
+ {
+ 25, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97
+ },
+
+ {
+ 25, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ 137, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
+ -98, -98, -98, -98, -98, -98
+ },
+
+ {
+ 25, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, 138, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99
+
+ },
+
+ {
+ 25, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
+ -100, -100, -100, -100, -100, -100
+ },
+
+ {
+ 25, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, 139, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101
+ },
+
+ {
+ 25, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, 140, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
+ -102, -102, -102, -102, -102, -102
+ },
+
+ {
+ 25, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, 141, -103,
+
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
+ -103, -103, -103, -103, -103, -103
+ },
+
+ {
+ 25, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
+ -104, -104, -104, -104, -104, -104
+
+ },
+
+ {
+ 25, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
+ -105, -105, -105, -105, -105, -105
+ },
+
+ {
+ 25, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, 142, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106
+ },
+
+ {
+ 25, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ 143, -107, -107, -107, -107, 144, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
+ -107, -107, -107, -107, -107, -107
+ },
+
+ {
+ 25, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, 145,
+ -108, -108, -108, -108, -108, -108, -108, -108, 146, -108,
+
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
+ -108, -108, -108, -108, -108, -108
+ },
+
+ {
+ 25, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, 147,
+ -109, -109, -109, -109, -109, -109, -109, -109, 148, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
+ -109, -109, -109, -109, -109, -109
+
+ },
+
+ {
+ 25, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, 149,
+ -110, -110, -110, -110, -110, -110, -110, -110, 150, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
+ -110, -110, -110, -110, -110, -110
+ },
+
+ {
+ 25, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, 151, 152,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+
+ -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
+ -111, -111, -111, -111, -111, -111
+ },
+
+ {
+ 25, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, 153, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112
+ },
+
+ {
+ 25, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, 113, 113,
+ 113, 113, 113, 113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
+ -113, -113, -113, -113, -113, -113
+ },
+
+ {
+ 25, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114
+
+ },
+
+ {
+ 25, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115
+ },
+
+ {
+ 25, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, 154,
+ 154, 154, 154, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+
+ -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
+ -116, -116, -116, -116, -116, -116
+ },
+
+ {
+ 25, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
+ -117, -117, -117, -117, -117, -117
+ },
+
+ {
+ 25, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118, -118, -118, -118, -118,
+ -118, -118, -118, -118, -118, -118
+ },
+
+ {
+ 25, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
+ -119, -119, -119, -119, -119, -119
+
+ },
+
+ {
+ 25, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
+ -120, -120, -120, -120, -120, -120
+ },
+
+ {
+ 25, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+
+ -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
+ -121, -121, -121, -121, -121, -121
+ },
+
+ {
+ 25, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122, -122, -122, -122, -122,
+ -122, -122, -122, -122, -122, -122
+ },
+
+ {
+ 25, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
+ -123, -123, -123, -123, -123, -123
+ },
+
+ {
+ 25, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, -124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124
+
+ },
+
+ {
+ 25, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, -125, 125, 125, 125, 125, 125, 125,
+
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 125
+ },
+
+ {
+ 25, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, -126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126
+ },
+
+ {
+ 25, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, -127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127
+ },
+
+ {
+ 25, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, -128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128
+ },
+
+ {
+ 25, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, -129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129
+
+ },
+
+ {
+ 25, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ -130, 130, 130, -130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130
+ },
+
+ {
+ 25, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ 131, -131, -131, 131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+
+ -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ -131, -131, -131, -131, -131, -131
+ },
+
+ {
+ 25, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, -132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 132
+ },
+
+ {
+ 25, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, -133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
+ 133, 133, 133, 133, 133, 133
+ },
+
+ {
+ 25, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, -134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
+ 134, 134, 134, 134, 134, 134
+
+ },
+
+ {
+ 25, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, -135, 135, 135, 135, 135, 135, 135,
+
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
+ 135, 135, 135, 135, 135, 135
+ },
+
+ {
+ 25, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
+ -136, -136, -136, -136, -136, -136
+ },
+
+ {
+ 25, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, 155, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
+ -137, -137, -137, -137, -137, -137
+ },
+
+ {
+ 25, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, 156, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
+ -138, -138, -138, -138, -138, -138
+ },
+
+ {
+ 25, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, 157, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139, -139, -139, -139, -139,
+ -139, -139, -139, -139, -139, -139
+
+ },
+
+ {
+ 25, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ 158, -140, 158, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, 159, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
+ -140, -140, -140, -140, -140, -140
+ },
+
+ {
+ 25, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, 160, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+
+ -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141
+ },
+
+ {
+ 25, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, 161, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
+ -142, -142, -142, -142, -142, -142
+ },
+
+ {
+ 25, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, 162, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143, -143, -143, -143, -143,
+ -143, -143, -143, -143, -143, -143
+ },
+
+ {
+ 25, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, 163, -144,
+
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
+ -144, -144, -144, -144, -144, -144
+
+ },
+
+ {
+ 25, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145
+ },
+
+ {
+ 25, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, 165, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+
+ -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
+ -146, -146, -146, -146, -146, -146
+ },
+
+ {
+ 25, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, 166,
+ 166, 166, 166, 166, 166, 166, 166, 166, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
+ -147, -147, -147, -147, -147, -147
+ },
+
+ {
+ 25, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, 167, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
+ -148, -148, -148, -148, -148, -148
+ },
+
+ {
+ 25, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, -149, -149,
+
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149, -149, -149, -149, -149,
+ -149, -149, -149, -149, -149, -149
+
+ },
+
+ {
+ 25, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, 169, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
+ -150, -150, -150, -150, -150, -150
+ },
+
+ {
+ 25, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, 170, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+
+ -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
+ -151, -151, -151, -151, -151, -151
+ },
+
+ {
+ 25, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, 171, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152
+ },
+
+ {
+ 25, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, 172, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
+ -153, -153, -153, -153, -153, -153
+ },
+
+ {
+ 25, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
+ -154, -154, -154, -154, -154, -154
+
+ },
+
+ {
+ 25, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, 173, -155,
+
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
+ -155, -155, -155, -155, -155, -155
+ },
+
+ {
+ 25, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, 174, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+
+ -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
+ -156, -156, -156, -156, -156, -156
+ },
+
+ {
+ 25, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157
+ },
+
+ {
+ 25, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
+ -158, -158, -158, -158, -158, -158
+ },
+
+ {
+ 25, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+
+ 175, -159, 175, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, -159, -159, -159, -159
+
+ },
+
+ {
+ 25, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160, -160, -160, -160, -160,
+ -160, -160, -160, -160, -160, -160
+ },
+
+ {
+ 25, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, 176, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, 177,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+
+ -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
+ -161, -161, -161, -161, -161, -161
+ },
+
+ {
+ 25, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
+ -162, -162, -162, -162, -162, -162
+ },
+
+ {
+ 25, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
+ -163, -163, -163, -163, -163, -163
+ },
+
+ {
+ 25, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, 178, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
+ -164, -164, -164, -164, -164, -164
+
+ },
+
+ {
+ 25, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
+ -165, -165, -165, -165, -165, -165
+ },
+
+ {
+ 25, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, 179, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+
+ -166, -166, -166, -166, -166, -166, -166, -166, -166, -166,
+ -166, -166, -166, -166, -166, -166
+ },
+
+ {
+ 25, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
+ -167, -167, -167, -167, -167, -167
+ },
+
+ {
+ 25, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, 180, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
+ -168, -168, -168, -168, -168, -168
+ },
+
+ {
+ 25, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
+ -169, -169, -169, -169, -169, -169
+
+ },
+
+ {
+ 25, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, 181, 181,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
+ -170, -170, -170, -170, -170, -170
+ },
+
+ {
+ 25, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, 182, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, 183, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+
+ -171, -171, -171, -171, -171, -171, -171, -171, -171, -171,
+ -171, -171, -171, -171, -171, -171
+ },
+
+ {
+ 25, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, 184, 184,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, -172, -172, -172
+ },
+
+ {
+ 25, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, 185, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, -173, -173, -173
+ },
+
+ {
+ 25, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+
+ -174, -174, 186, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, -174, -174, -174
+
+ },
+
+ {
+ 25, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, -175, -175, -175
+ },
+
+ {
+ 25, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+
+ -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, -176, -176, -176
+ },
+
+ {
+ 25, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, 187,
+ 187, 187, 187, 187, 187, 187, 187, 187, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, -177, -177, -177
+ },
+
+ {
+ 25, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, -178, -178, -178
+ },
+
+ {
+ 25, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, -179, -179, -179
+
+ },
+
+ {
+ 25, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, -180, -180, -180
+ },
+
+ {
+ 25, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, 188,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, 189, -181, 190, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+
+ -181, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, -181, -181, -181
+ },
+
+ {
+ 25, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, 191, 191,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, -182, -182, -182
+ },
+
+ {
+ 25, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, 192, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, -183, -183, -183
+ },
+
+ {
+ 25, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, 193,
+
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, 194, -184, 195, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, -184, -184, -184
+
+ },
+
+ {
+ 25, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, 196, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, -185, -185, -185
+ },
+
+ {
+ 25, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+
+ -186, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186
+ },
+
+ {
+ 25, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, 197, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, -187, -187, -187
+ },
+
+ {
+ 25, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, -188, -188, -188
+ },
+
+ {
+ 25, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, 198, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, -189, -189, -189
+
+ },
+
+ {
+ 25, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, 199, -190, -190, -190, -190, -190, -190,
+
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, -190, -190, -190
+ },
+
+ {
+ 25, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, 200,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, 201, -191, 202, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+
+ -191, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, -191, -191, -191
+ },
+
+ {
+ 25, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, 203, 203,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, -192, -192, -192
+ },
+
+ {
+ 25, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, -193, -193, -193
+ },
+
+ {
+ 25, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, 204, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, -194, -194, -194
+
+ },
+
+ {
+ 25, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, 205, -195, -195, -195, -195, -195, -195,
+
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, -195, -195, -195
+ },
+
+ {
+ 25, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+
+ -196, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, -196, -196, -196
+ },
+
+ {
+ 25, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, -197, -197, -197
+ },
+
+ {
+ 25, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, -198, -198, -198
+ },
+
+ {
+ 25, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199
+
+ },
+
+ {
+ 25, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, -200, -200, -200
+ },
+
+ {
+ 25, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, 206, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+
+ -201, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, -201, -201, -201
+ },
+
+ {
+ 25, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, 207, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, -202, -202, -202
+ },
+
+ {
+ 25, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, 208,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+
+ -203, -203, -203, 209, -203, 210, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, -203, -203, -203
+ },
+
+ {
+ 25, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204
+
+ },
+
+ {
+ 25, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, -205, -205, -205
+ },
+
+ {
+ 25, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+
+ -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, -206, -206, -206
+ },
+
+ {
+ 25, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, -207, -207, -207
+ },
+
+ {
+ 25, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, -208, -208, -208
+ },
+
+ {
+ 25, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, 211, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209
+
+ },
+
+ {
+ 25, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, 212, -210, -210, -210, -210, -210, -210,
+
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, -210, -210, -210
+ },
+
+ {
+ 25, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+
+ -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
+ -211, -211, -211, -211, -211, -211
+ },
+
+ {
+ 25, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212, -212, -212, -212, -212,
+ -212, -212, -212, -212, -212, -212
+ },
+
+ } ;
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up gabc_notes_determination_text.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ gabc_notes_determination_leng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 109
+#define YY_END_OF_BUFFER 110
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int32_t yy_accept[213] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 110, 108, 42, 42, 78, 108,
+ 1, 94, 49, 108, 96, 76, 63, 56, 99, 83,
+ 98, 92, 102, 66, 106, 104, 45, 108, 95, 48,
+ 92, 92, 92, 101, 100, 65, 107, 105, 103, 43,
+ 39, 40, 97, 34, 38, 35, 36, 32, 33, 37,
+ 3, 2, 28, 29, 30, 31, 42, 82, 81, 79,
+ 94, 50, 51, 52, 53, 54, 55, 93, 96, 77,
+ 64, 57, 58, 59, 60, 61, 62, 0, 0, 74,
+
+ 0, 0, 0, 73, 75, 0, 0, 0, 0, 0,
+ 0, 0, 95, 41, 46, 0, 67, 68, 69, 70,
+ 71, 72, 44, 34, 35, 36, 32, 33, 37, 3,
+ 2, 28, 29, 30, 31, 80, 0, 0, 86, 88,
+ 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 47, 0, 0, 87, 89, 90, 85,
+ 0, 5, 4, 0, 24, 0, 23, 0, 22, 0,
+ 0, 0, 0, 0, 91, 25, 0, 20, 19, 18,
+ 0, 0, 0, 0, 0, 26, 0, 6, 0, 0,
+ 0, 0, 7, 0, 0, 27, 21, 10, 14, 8,
+
+ 0, 0, 0, 11, 15, 12, 16, 9, 0, 0,
+ 13, 17
+ } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+static yyconst yy_state_type yy_NUL_trans[213] =
+ { 0,
+ 26, 26, 64, 64, 66, 66, 67, 67, 68, 68,
+ 69, 69, 70, 70, 71, 71, 73, 73, 74, 74,
+ 75, 75, 76, 76, 0, 0, 0, 0, 0, 78,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 124, 0, 125, 126, 127, 128, 129,
+ 130, 0, 132, 133, 134, 135, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 124, 125, 126, 127, 128, 129, 130,
+ 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0
+ } ;
+
+extern int gabc_notes_determination__flex_debug;
+int gabc_notes_determination__flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *gabc_notes_determination_text;
+#line 1 "gabc/gabc-notes-determination.l"
+#line 2 "gabc/gabc-notes-determination.l"
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <ctype.h> /* for tolower */
+#include "bool.h"
+#include "struct.h"
+#include "messages.h"
+#include "support.h"
+
+#include "gabc.h"
+
+#define YY_NO_INPUT
+
+#define YY_USER_ACTION gabc_update_location(&notes_lloc, \
+ gabc_notes_determination_text, gabc_notes_determination_leng);
+
+static gregorio_scanner_location notes_lloc;
+static gregorio_note *current_note;
+static char char_for_brace;
+static unsigned int nbof_isolated_episemus;
+static char *notesmacros[10];
+static char tempstr[256];
+static int brace_var_counter;
+static int overbrace_var, underbrace_var;
+static const char *overbrace_var_kind;
+
+static __inline char pitch_letter_to_height(const char pitch) {
+ return pitch - 'a' + LOWEST_PITCH;
+}
+
+static gregorio_shape punctum(const char pitch)
+{
+ if (pitch < 'a') {
+ return S_PUNCTUM_INCLINATUM;
+ } else {
+ return S_PUNCTUM;
+ }
+}
+
+static __inline void lex_add_note(int i, gregorio_shape shape, char signs,
+ char liquescentia)
+{
+ nbof_isolated_episemus = 0;
+ gregorio_add_note(&current_note,
+ pitch_letter_to_height(tolower((unsigned char)gabc_notes_determination_text[i])),
+ shape, signs, liquescentia, NULL, &notes_lloc);
+}
+
+static __inline void add_bar_as_note(gregorio_bar bar)
+{
+ nbof_isolated_episemus = 0;
+ gregorio_add_bar_as_note(&current_note, bar, &notes_lloc);
+}
+
+static __inline void error(void)
+{
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("undefined macro used: m%d"),
+ gabc_notes_determination_text[3] - '0');
+}
+
+static void add_h_episemus(void) {
+ grehepisemus_size size = H_NORMAL;
+ gregorio_vposition vposition = VPOS_AUTO;
+ bool disable_bridge = false;
+
+ char *ptr = gabc_notes_determination_text;
+ char current;
+ /* first character is the underscore */
+ while ((current = *(++ptr))) {
+ switch(current) {
+ case '0':
+ vposition = VPOS_BELOW;
+ break;
+ case '1':
+ vposition = VPOS_ABOVE;
+ break;
+ case '2':
+ disable_bridge = true;
+ break;
+ case '3':
+ size = H_SMALL_LEFT;
+ break;
+ case '4':
+ size = H_SMALL_CENTRE;
+ break;
+ case '5':
+ size = H_SMALL_RIGHT;
+ break;
+ default:
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("unrecognized horizontal episemus modifier: %c"),
+ current);
+ break;
+ };
+ }
+
+ gregorio_add_h_episemus(current_note, size, vposition, disable_bridge,
+ &nbof_isolated_episemus);
+}
+
+static void add_sign(gregorio_sign sign) {
+ gregorio_vposition vposition = VPOS_AUTO;
+ switch(gabc_notes_determination_text[1]) {
+ case '0':
+ vposition = VPOS_BELOW;
+ break;
+ case '1':
+ vposition = VPOS_ABOVE;
+ break;
+ }
+ gregorio_add_sign(current_note, sign, vposition);
+}
+
+static __inline void add_alteration(const gregorio_type type) {
+ gregorio_add_alteration_as_note(&current_note, type,
+ pitch_letter_to_height(gabc_notes_determination_text[0]),
+ &notes_lloc);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+#line 7352 "gabc/gabc-notes-determination-l.c"
+
+#define INITIAL 0
+#define texverbnote 1
+#define texverbglyph 2
+#define texverbelement 3
+#define choralsign 4
+#define choralnabc 5
+#define alt 6
+#define comments 7
+#define overbrace 8
+#define underbrace 9
+#define overcurlybrace 10
+#define overcurlyaccentusbrace 11
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int gabc_notes_determination_lex_destroy (void );
+
+int gabc_notes_determination_get_debug (void );
+
+void gabc_notes_determination_set_debug (int debug_flag );
+
+YY_EXTRA_TYPE gabc_notes_determination_get_extra (void );
+
+void gabc_notes_determination_set_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *gabc_notes_determination_get_in (void );
+
+void gabc_notes_determination_set_in (FILE * in_str );
+
+FILE *gabc_notes_determination_get_out (void );
+
+void gabc_notes_determination_set_out (FILE * out_str );
+
+yy_size_t gabc_notes_determination_get_leng (void );
+
+char *gabc_notes_determination_get_text (void );
+
+int gabc_notes_determination_get_lineno (void );
+
+void gabc_notes_determination_set_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int gabc_notes_determination_wrap (void );
+#else
+extern int gabc_notes_determination_wrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+ static int yy_start_stack_ptr = 0;
+ static int yy_start_stack_depth = 0;
+ static int *yy_start_stack = NULL;
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( gabc_notes_determination_text, gabc_notes_determination_leng, 1, gabc_notes_determination_out )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ size_t n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( gabc_notes_determination_in )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( gabc_notes_determination_in ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, gabc_notes_determination_in))==0 && ferror(gabc_notes_determination_in)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(gabc_notes_determination_in); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int gabc_notes_determination_lex (void);
+
+#define YY_DECL int gabc_notes_determination_lex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after gabc_notes_determination_text and gabc_notes_determination_leng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! gabc_notes_determination_in )
+ gabc_notes_determination_in = stdin;
+
+ if ( ! gabc_notes_determination_out )
+ gabc_notes_determination_out = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ gabc_notes_determination_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ gabc_notes_determination__create_buffer(gabc_notes_determination_in,YY_BUF_SIZE );
+ }
+
+ gabc_notes_determination__load_buffer_state( );
+ }
+
+ {
+#line 169 "gabc/gabc-notes-determination.l"
+
+#line 7576 "gabc/gabc-notes-determination-l.c"
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of gabc_notes_determination_text. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+yy_match:
+ while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
+ {
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+
+ ++yy_cp;
+ }
+
+ yy_current_state = -yy_current_state;
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = (yy_hold_char);
+ yy_cp = (yy_last_accepting_cpos) + 1;
+ yy_current_state = (yy_last_accepting_state);
+ goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 170 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(comments);
+ }
+ YY_BREAK
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 173 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 176 "gabc/gabc-notes-determination.l"
+{
+ /* ignored */
+ }
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 179 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(choralsign);
+ }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 182 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(choralnabc);
+ }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 185 "gabc/gabc-notes-determination.l"
+{
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ BEGIN(overbrace);
+ }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 189 "gabc/gabc-notes-determination.l"
+{
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ BEGIN(underbrace);
+ }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 193 "gabc/gabc-notes-determination.l"
+{
+ char_for_brace = gabc_notes_determination_text[5]-'0';
+ BEGIN(overcurlybrace);
+ }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 197 "gabc/gabc-notes-determination.l"
+{
+ char_for_brace = gabc_notes_determination_text[6]-'0';
+ BEGIN(overcurlyaccentusbrace);
+ }
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 201 "gabc/gabc-notes-determination.l"
+{
+ if (overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace without termination of "
+ "previous overbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ overbrace_var = ++brace_var_counter;
+ overbrace_var_kind = "ob";
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreOverBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}",
+ overbrace_var, char_for_brace, overbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 217 "gabc/gabc-notes-determination.l"
+{
+ if (underbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable underbrace without termination of "
+ "previous underbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ underbrace_var = ++brace_var_counter;
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreUnderBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}",
+ underbrace_var, char_for_brace, underbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 232 "gabc/gabc-notes-determination.l"
+{
+ if (overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace without termination of "
+ "previous overbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[5]-'0';
+ overbrace_var = ++brace_var_counter;
+ overbrace_var_kind = "ocb";
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{0}",
+ overbrace_var, char_for_brace, overbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 248 "gabc/gabc-notes-determination.l"
+{
+ if (overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace without termination of "
+ "previous overbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[6]-'0';
+ overbrace_var = ++brace_var_counter;
+ overbrace_var_kind = "ocba";
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{1}",
+ overbrace_var, char_for_brace, overbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 264 "gabc/gabc-notes-determination.l"
+{
+ if (!overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace termination without "
+ "variable overbrace start"));
+ } else if (strcmp (overbrace_var_kind, "ob")) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace started with %s "
+ "and terminated with ob"),
+ overbrace_var_kind);
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var,
+ char_for_brace);
+ overbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 283 "gabc/gabc-notes-determination.l"
+{
+ if (!underbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable underbrace termination without "
+ "variable underbrace start"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", underbrace_var,
+ char_for_brace);
+ underbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 297 "gabc/gabc-notes-determination.l"
+{
+ if (!overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace termination without "
+ "variable overbrace start"));
+ } else if (strcmp (overbrace_var_kind, "ocb")) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace started with %s "
+ "and terminated with ocb"),
+ overbrace_var_kind);
+ } else {
+ char_for_brace = gabc_notes_determination_text[5]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var,
+ char_for_brace);
+ overbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 316 "gabc/gabc-notes-determination.l"
+{
+ if (!overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace termination without "
+ "variable overbrace start"));
+ } else if (strcmp (overbrace_var_kind, "ocba")) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace started with %s "
+ "and terminated with ocba"),
+ overbrace_var_kind);
+ } else {
+ char_for_brace = gabc_notes_determination_text[6]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var,
+ char_for_brace);
+ overbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 335 "gabc/gabc-notes-determination.l"
+{
+ if (notesmacros[gabc_notes_determination_text[3]-'0']) {
+ gregorio_add_texverb_to_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[3]-'0']));
+ } else error();
+ }
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 341 "gabc/gabc-notes-determination.l"
+{
+ if (notesmacros[gabc_notes_determination_text[3]-'0']) {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[3]-'0']),
+ GRE_TEXVERB_GLYPH, &notes_lloc);
+ } else error();
+ }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 348 "gabc/gabc-notes-determination.l"
+{
+ if (notesmacros[gabc_notes_determination_text[3]-'0']) {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[3]-'0']),
+ GRE_TEXVERB_ELEMENT, &notes_lloc);
+ } else error();
+ }
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 355 "gabc/gabc-notes-determination.l"
+{
+ if (notesmacros[gabc_notes_determination_text[5]-'0']) {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[5]-'0']),
+ GRE_TEXVERB_ELEMENT, &notes_lloc);
+ } else error();
+ }
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 362 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(texverbnote);
+ }
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 365 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(texverbglyph);
+ }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 368 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(texverbelement);
+ }
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 371 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(alt);
+ }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 374 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_nlba_as_note(&current_note, NLBA_BEGINNING, &notes_lloc);
+ }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 377 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_nlba_as_note(&current_note, NLBA_END, &notes_lloc);
+ }
+ YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+#line 380 "gabc/gabc-notes-determination.l"
+{
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreOverBrace{%s}{0pt}{0pt}{%d}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ YY_BREAK
+case 29:
+/* rule 29 can match eol */
+YY_RULE_SETUP
+#line 386 "gabc/gabc-notes-determination.l"
+{
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreUnderBrace{%s}{0pt}{0pt}{%d}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ YY_BREAK
+case 30:
+/* rule 30 can match eol */
+YY_RULE_SETUP
+#line 392 "gabc/gabc-notes-determination.l"
+{
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+#line 398 "gabc/gabc-notes-determination.l"
+{
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ YY_BREAK
+case 32:
+/* rule 32 can match eol */
+YY_RULE_SETUP
+#line 404 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_cs_to_note(&current_note,
+ strdup(gabc_notes_determination_text), false);
+ }
+ YY_BREAK
+case 33:
+/* rule 33 can match eol */
+YY_RULE_SETUP
+#line 408 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_cs_to_note(&current_note,
+ strdup(gabc_notes_determination_text), true);
+ }
+ YY_BREAK
+case 34:
+/* rule 34 can match eol */
+YY_RULE_SETUP
+#line 412 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_texverb_to_note(&current_note,
+ strdup(gabc_notes_determination_text));
+ }
+ YY_BREAK
+case 35:
+/* rule 35 can match eol */
+YY_RULE_SETUP
+#line 416 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(gabc_notes_determination_text), GRE_TEXVERB_GLYPH,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 36:
+/* rule 36 can match eol */
+YY_RULE_SETUP
+#line 421 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(gabc_notes_determination_text), GRE_TEXVERB_ELEMENT,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 37:
+/* rule 37 can match eol */
+YY_RULE_SETUP
+#line 426 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(gabc_notes_determination_text), GRE_ALT, &notes_lloc);
+ }
+ YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 430 "gabc/gabc-notes-determination.l"
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 433 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_texverb_as_note(&current_note, strdup("\\hbox to 0pt{"),
+ GRE_TEXVERB_ELEMENT, &notes_lloc);
+ }
+ YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 437 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_texverb_as_note(&current_note,
+ strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), GRE_TEXVERB_ELEMENT,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 442 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_manual_custos_as_note(&current_note,
+ pitch_letter_to_height(gabc_notes_determination_text[0]),
+ &notes_lloc);
+ }
+ YY_BREAK
+case 42:
+/* rule 42 can match eol */
+YY_RULE_SETUP
+#line 447 "gabc/gabc-notes-determination.l"
+/* ignore ends of line and tabs */;
+ YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 448 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_end_of_line_as_note(&current_note, GRE_END_OF_LINE,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 452 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_custo_as_note(&current_note, &notes_lloc);
+ }
+ YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 455 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_end_of_line_as_note(&current_note, GRE_END_OF_PAR,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 459 "gabc/gabc-notes-determination.l"
+{
+ if (gabc_notes_determination_text[0]=='c') {
+ gregorio_add_clef_change_as_note(&current_note, GRE_C_KEY_CHANGE,
+ gabc_notes_determination_text[1], &notes_lloc);
+ } else {
+ gregorio_add_clef_change_as_note(&current_note, GRE_F_KEY_CHANGE,
+ gabc_notes_determination_text[1], &notes_lloc);
+ }
+ }
+ YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 468 "gabc/gabc-notes-determination.l"
+{
+ if (gabc_notes_determination_text[0]=='c') {
+ gregorio_add_clef_change_as_note(&current_note,
+ GRE_C_KEY_CHANGE_FLATED, gabc_notes_determination_text[2],
+ &notes_lloc);
+ } else {
+ gregorio_add_clef_change_as_note(&current_note,
+ GRE_F_KEY_CHANGE_FLATED, gabc_notes_determination_text[2],
+ &notes_lloc);
+ }
+ }
+ YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 479 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_VIRGULA);
+ }
+ YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 482 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINIMA);
+ }
+ YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 485 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D1);
+ }
+ YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 488 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D2);
+ }
+ YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 491 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D3);
+ }
+ YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 494 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D4);
+ }
+ YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 497 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D5);
+ }
+ YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 500 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D6);
+ }
+ YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 503 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR);
+ }
+ YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 506 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D1);
+ }
+ YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 509 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D2);
+ }
+ YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 512 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D3);
+ }
+ YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 515 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D4);
+ }
+ YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 518 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D5);
+ }
+ YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 521 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MINOR_D6);
+ }
+ YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 524 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_MAIOR);
+ }
+ YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 527 "gabc/gabc-notes-determination.l"
+{
+ add_bar_as_note(B_DIVISIO_FINALIS);
+ }
+ YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 530 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_PUNCTUM_CAVUM);
+ }
+ YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 533 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_LINEA_PUNCTUM);
+ }
+ YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 536 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM);
+ }
+ YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 539 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_special_sign(current_note, _ACCENTUS);
+ }
+ YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 542 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_special_sign(current_note, _ACCENTUS_REVERSUS);
+ }
+ YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 545 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_special_sign(current_note, _CIRCULUS);
+ }
+ YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 548 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_special_sign(current_note, _SEMI_CIRCULUS);
+ }
+ YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 551 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS);
+ }
+ YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 554 "gabc/gabc-notes-determination.l"
+{
+ add_alteration(GRE_FLAT);
+ }
+ YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 557 "gabc/gabc-notes-determination.l"
+{
+ add_alteration(GRE_SHARP);
+ }
+ YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 560 "gabc/gabc-notes-determination.l"
+{
+ add_alteration(GRE_NATURAL);
+ }
+ YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 563 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_space_as_note(&current_note, SP_NEUMATIC_CUT, &notes_lloc);
+ }
+ YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 566 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_space_as_note(&current_note, SP_LARGER_SPACE, &notes_lloc);
+ }
+ YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 569 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_space_as_note(&current_note, SP_GLYPH_SPACE, &notes_lloc);
+ }
+ YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 572 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_space_as_note(&current_note, SP_NEUMATIC_CUT_NB,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 576 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_space_as_note(&current_note, SP_LARGER_SPACE_NB,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 580 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_space_as_note(&current_note, SP_GLYPH_SPACE_NB,
+ &notes_lloc);
+ }
+ YY_BREAK
+case 82:
+/* rule 82 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */
+YY_LINENO_REWIND_TO(yy_bp + 1);
+(yy_c_buf_p) = yy_cp = yy_bp + 1;
+YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */
+YY_RULE_SETUP
+#line 584 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_space_as_note(&current_note, SP_ZERO_WIDTH, &notes_lloc);
+ }
+ YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 587 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_LINEA);
+ }
+ YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 590 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+ YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 593 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+ YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 596 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+ YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 599 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+ YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 602 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+ YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 605 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTA);
+ }
+ YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 608 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+ YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 611 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTA);
+ }
+ YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 614 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN,
+ L_NO_LIQUESCENTIA);
+ }
+ YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 618 "gabc/gabc-notes-determination.l"
+{
+ lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN,
+ L_INITIO_DEBILIS);
+ }
+ YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 622 "gabc/gabc-notes-determination.l"
+{
+ add_sign(_V_EPISEMUS);
+ }
+ YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 625 "gabc/gabc-notes-determination.l"
+{
+ add_h_episemus();
+ }
+ YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 628 "gabc/gabc-notes-determination.l"
+{
+ add_sign(_PUNCTUM_MORA);
+ }
+ YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 631 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_liquescentia(current_note, L_DEMINUTUS);
+ }
+ YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 634 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_liquescentia(current_note, L_AUCTUS_DESCENDENS);
+ }
+ YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 637 "gabc/gabc-notes-determination.l"
+{
+ gregorio_add_liquescentia(current_note, L_AUCTUS_ASCENDENS);
+ }
+ YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 640 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_QUADRATUM);
+ }
+ YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 643 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_ORISCUS);
+ }
+ YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 646 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_ORISCUS_SCAPUS);
+ }
+ YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 649 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_QUILISMA);
+ }
+ YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 652 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM);
+ }
+ YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 655 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_VIRGA);
+ }
+ YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 658 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_VIRGA_REVERSA);
+ }
+ YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 661 "gabc/gabc-notes-determination.l"
+{
+ gregorio_change_shape(current_note, S_STROPHA);
+ }
+ YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 664 "gabc/gabc-notes-determination.l"
+{
+ gregorio_messagef("det_notes_from_string", VERBOSITY_ERROR, 0,
+ _("unrecognized character: \"%c\""),
+ gabc_notes_determination_text[0]);
+ }
+ YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 670 "gabc/gabc-notes-determination.l"
+ECHO;
+ YY_BREAK
+#line 8574 "gabc/gabc-notes-determination-l.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(texverbnote):
+case YY_STATE_EOF(texverbglyph):
+case YY_STATE_EOF(texverbelement):
+case YY_STATE_EOF(choralsign):
+case YY_STATE_EOF(choralnabc):
+case YY_STATE_EOF(alt):
+case YY_STATE_EOF(comments):
+case YY_STATE_EOF(overbrace):
+case YY_STATE_EOF(underbrace):
+case YY_STATE_EOF(overcurlybrace):
+case YY_STATE_EOF(overcurlyaccentusbrace):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed gabc_notes_determination_in at a new source and called
+ * gabc_notes_determination_lex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = gabc_notes_determination_in;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_c_buf_p);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( gabc_notes_determination_wrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * gabc_notes_determination_text, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+ } /* end of user's declarations */
+} /* end of gabc_notes_determination_lex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ yy_size_t num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ yy_size_t new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ gabc_notes_determination_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ gabc_notes_determination_restart(gabc_notes_determination_in );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) gabc_notes_determination_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ if ( *yy_cp )
+ {
+ yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
+ }
+ else
+ yy_current_state = yy_NUL_trans[yy_current_state];
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+ register char *yy_cp = (yy_c_buf_p);
+
+ yy_current_state = yy_NUL_trans[yy_current_state];
+ yy_is_jam = (yy_current_state == 0);
+
+ if ( ! yy_is_jam )
+ {
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ }
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ gabc_notes_determination_restart(gabc_notes_determination_in );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( gabc_notes_determination_wrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve gabc_notes_determination_text */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void gabc_notes_determination_restart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ gabc_notes_determination_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ gabc_notes_determination__create_buffer(gabc_notes_determination_in,YY_BUF_SIZE );
+ }
+
+ gabc_notes_determination__init_buffer(YY_CURRENT_BUFFER,input_file );
+ gabc_notes_determination__load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void gabc_notes_determination__switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * gabc_notes_determination_pop_buffer_state();
+ * gabc_notes_determination_push_buffer_state(new_buffer);
+ */
+ gabc_notes_determination_ensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ gabc_notes_determination__load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (gabc_notes_determination_wrap()) processing, but the only time this flag
+ * is looked at is after gabc_notes_determination_wrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void gabc_notes_determination__load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ gabc_notes_determination_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE gabc_notes_determination__create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) gabc_notes_determination_alloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_notes_determination__create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) gabc_notes_determination_alloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_notes_determination__create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ gabc_notes_determination__init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with gabc_notes_determination__create_buffer()
+ *
+ */
+ void gabc_notes_determination__delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ gabc_notes_determination_free((void *) b->yy_ch_buf );
+
+ gabc_notes_determination_free((void *) b );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a gabc_notes_determination_restart() or at EOF.
+ */
+ static void gabc_notes_determination__init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ gabc_notes_determination__flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then gabc_notes_determination__init_buffer was _probably_
+ * called from gabc_notes_determination_restart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void gabc_notes_determination__flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ gabc_notes_determination__load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void gabc_notes_determination_push_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ gabc_notes_determination_ensure_buffer_stack();
+
+ /* This block is copied from gabc_notes_determination__switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from gabc_notes_determination__switch_to_buffer. */
+ gabc_notes_determination__load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void gabc_notes_determination_pop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ gabc_notes_determination__delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ gabc_notes_determination__load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void gabc_notes_determination_ensure_buffer_stack (void)
+{
+ yy_size_t num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)gabc_notes_determination_alloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_notes_determination_ensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)gabc_notes_determination_realloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_notes_determination_ensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE gabc_notes_determination__scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) gabc_notes_determination_alloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_notes_determination__scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ gabc_notes_determination__switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to gabc_notes_determination_lex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * gabc_notes_determination__scan_bytes() instead.
+ */
+YY_BUFFER_STATE gabc_notes_determination__scan_string (yyconst char * yystr )
+{
+
+ return gabc_notes_determination__scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to gabc_notes_determination_lex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE gabc_notes_determination__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ yy_size_t i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) gabc_notes_determination_alloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_notes_determination__scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = gabc_notes_determination__scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in gabc_notes_determination__scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up gabc_notes_determination_text. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ gabc_notes_determination_text[gabc_notes_determination_leng] = (yy_hold_char); \
+ (yy_c_buf_p) = gabc_notes_determination_text + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ gabc_notes_determination_leng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int gabc_notes_determination_get_lineno (void)
+{
+
+ return gabc_notes_determination_lineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *gabc_notes_determination_get_in (void)
+{
+ return gabc_notes_determination_in;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *gabc_notes_determination_get_out (void)
+{
+ return gabc_notes_determination_out;
+}
+
+/** Get the length of the current token.
+ *
+ */
+yy_size_t gabc_notes_determination_get_leng (void)
+{
+ return gabc_notes_determination_leng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *gabc_notes_determination_get_text (void)
+{
+ return gabc_notes_determination_text;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void gabc_notes_determination_set_lineno (int line_number )
+{
+
+ gabc_notes_determination_lineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see gabc_notes_determination__switch_to_buffer
+ */
+void gabc_notes_determination_set_in (FILE * in_str )
+{
+ gabc_notes_determination_in = in_str ;
+}
+
+void gabc_notes_determination_set_out (FILE * out_str )
+{
+ gabc_notes_determination_out = out_str ;
+}
+
+int gabc_notes_determination_get_debug (void)
+{
+ return gabc_notes_determination__flex_debug;
+}
+
+void gabc_notes_determination_set_debug (int bdebug )
+{
+ gabc_notes_determination__flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from gabc_notes_determination_lex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+ (yy_start_stack_ptr) = 0;
+ (yy_start_stack_depth) = 0;
+ (yy_start_stack) = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ gabc_notes_determination_in = stdin;
+ gabc_notes_determination_out = stdout;
+#else
+ gabc_notes_determination_in = (FILE *) 0;
+ gabc_notes_determination_out = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * gabc_notes_determination_lex_init()
+ */
+ return 0;
+}
+
+/* gabc_notes_determination_lex_destroy is for both reentrant and non-reentrant scanners. */
+int gabc_notes_determination_lex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ gabc_notes_determination__delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ gabc_notes_determination_pop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ gabc_notes_determination_free((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Destroy the start condition stack. */
+ gabc_notes_determination_free((yy_start_stack) );
+ (yy_start_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * gabc_notes_determination_lex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *gabc_notes_determination_alloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *gabc_notes_determination_realloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void gabc_notes_determination_free (void * ptr )
+{
+ free( (char *) ptr ); /* see gabc_notes_determination_realloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 670 "gabc/gabc-notes-determination.l"
+
+
+
+gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10],
+ gregorio_scanner_location *loc)
+{
+ int i;
+ YY_BUFFER_STATE buf;
+
+ notes_lloc.first_line = loc->first_line;
+ notes_lloc.first_column = loc->first_column;
+ notes_lloc.first_offset = loc->first_offset;
+ /* yes... I do mean to set values from loc->first_* */
+ notes_lloc.last_line = loc->first_line;
+ notes_lloc.last_column = loc->first_column;
+ notes_lloc.last_offset = loc->first_offset;
+
+ /* a small optimization could uccur here: we could do it only once at the
+ * beginning of the score, not at each syllable */
+ for (i = 0; i < 10; i++) {
+ notesmacros[i] = newmacros[i];
+ }
+ nbof_isolated_episemus = 0;
+ current_note = NULL;
+ buf = gabc_notes_determination__scan_string(str);
+ gabc_notes_determination_lex();
+ gabc_notes_determination__flush_buffer(buf);
+ gabc_notes_determination__delete_buffer(buf);
+ gregorio_go_to_first_note(&current_note);
+ return current_note;
+}
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination.l b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination.l
new file mode 100644
index 00000000000..d5a141fb538
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-notes-determination.l
@@ -0,0 +1,699 @@
+%{
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <ctype.h> /* for tolower */
+#include "bool.h"
+#include "struct.h"
+#include "messages.h"
+#include "support.h"
+
+#include "gabc.h"
+
+#define YY_NO_INPUT
+
+#define YY_USER_ACTION gabc_update_location(&notes_lloc, \
+ gabc_notes_determination_text, gabc_notes_determination_leng);
+
+static gregorio_scanner_location notes_lloc;
+static gregorio_note *current_note;
+static char char_for_brace;
+static unsigned int nbof_isolated_episemus;
+static char *notesmacros[10];
+static char tempstr[256];
+static int brace_var_counter;
+static int overbrace_var, underbrace_var;
+static const char *overbrace_var_kind;
+
+static __inline char pitch_letter_to_height(const char pitch) {
+ return pitch - 'a' + LOWEST_PITCH;
+}
+
+static gregorio_shape punctum(const char pitch)
+{
+ if (pitch < 'a') {
+ return S_PUNCTUM_INCLINATUM;
+ } else {
+ return S_PUNCTUM;
+ }
+}
+
+static __inline void lex_add_note(int i, gregorio_shape shape, char signs,
+ char liquescentia)
+{
+ nbof_isolated_episemus = 0;
+ gregorio_add_note(&current_note,
+ pitch_letter_to_height(tolower((unsigned char)gabc_notes_determination_text[i])),
+ shape, signs, liquescentia, NULL, &notes_lloc);
+}
+
+static __inline void add_bar_as_note(gregorio_bar bar)
+{
+ nbof_isolated_episemus = 0;
+ gregorio_add_bar_as_note(&current_note, bar, &notes_lloc);
+}
+
+static __inline void error(void)
+{
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("undefined macro used: m%d"),
+ gabc_notes_determination_text[3] - '0');
+}
+
+static void add_h_episemus(void) {
+ grehepisemus_size size = H_NORMAL;
+ gregorio_vposition vposition = VPOS_AUTO;
+ bool disable_bridge = false;
+
+ char *ptr = gabc_notes_determination_text;
+ char current;
+ /* first character is the underscore */
+ while ((current = *(++ptr))) {
+ switch(current) {
+ case '0':
+ vposition = VPOS_BELOW;
+ break;
+ case '1':
+ vposition = VPOS_ABOVE;
+ break;
+ case '2':
+ disable_bridge = true;
+ break;
+ case '3':
+ size = H_SMALL_LEFT;
+ break;
+ case '4':
+ size = H_SMALL_CENTRE;
+ break;
+ case '5':
+ size = H_SMALL_RIGHT;
+ break;
+ default:
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("unrecognized horizontal episemus modifier: %c"),
+ current);
+ break;
+ };
+ }
+
+ gregorio_add_h_episemus(current_note, size, vposition, disable_bridge,
+ &nbof_isolated_episemus);
+}
+
+static void add_sign(gregorio_sign sign) {
+ gregorio_vposition vposition = VPOS_AUTO;
+ switch(gabc_notes_determination_text[1]) {
+ case '0':
+ vposition = VPOS_BELOW;
+ break;
+ case '1':
+ vposition = VPOS_ABOVE;
+ break;
+ }
+ gregorio_add_sign(current_note, sign, vposition);
+}
+
+static __inline void add_alteration(const gregorio_type type) {
+ gregorio_add_alteration_as_note(&current_note, type,
+ pitch_letter_to_height(gabc_notes_determination_text[0]),
+ &notes_lloc);
+}
+
+%}
+
+%option stack
+%option 8bit
+%option pointer
+%option nounput
+%option noyy_push_state
+%option noyy_pop_state
+%option noyy_top_state
+%option full
+%option noread
+%option nomain
+%option align
+%option noyylineno
+%option prefix="gabc_notes_determination_"
+%option noyywrap
+
+%x texverbnote
+%x texverbglyph
+%x texverbelement
+%x choralsign
+%x choralnabc
+%x alt
+%x comments
+%x overbrace
+%x underbrace
+%x overcurlybrace
+%x overcurlyaccentusbrace
+
+%%
+<INITIAL>\% {
+ BEGIN(comments);
+ }
+<comments>(\n|\r)+ {
+ BEGIN(INITIAL);
+ }
+<comments>[^\n\r]* {
+ /* ignored */
+ }
+<INITIAL>\[cs: {
+ BEGIN(choralsign);
+ }
+<INITIAL>\[cn: {
+ BEGIN(choralnabc);
+ }
+<INITIAL>\[ob:[01]; {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ BEGIN(overbrace);
+ }
+<INITIAL>\[ub:[01]; {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ BEGIN(underbrace);
+ }
+<INITIAL>\[ocb:[01]; {
+ char_for_brace = gabc_notes_determination_text[5]-'0';
+ BEGIN(overcurlybrace);
+ }
+<INITIAL>\[ocba:[01]; {
+ char_for_brace = gabc_notes_determination_text[6]-'0';
+ BEGIN(overcurlyaccentusbrace);
+ }
+<INITIAL>\[ob:[01]\{\] {
+ if (overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace without termination of "
+ "previous overbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ overbrace_var = ++brace_var_counter;
+ overbrace_var_kind = "ob";
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreOverBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}",
+ overbrace_var, char_for_brace, overbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[ub:[01]\{\] {
+ if (underbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable underbrace without termination of "
+ "previous underbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ underbrace_var = ++brace_var_counter;
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreUnderBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}",
+ underbrace_var, char_for_brace, underbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[ocb:[01]\{\] {
+ if (overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace without termination of "
+ "previous overbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[5]-'0';
+ overbrace_var = ++brace_var_counter;
+ overbrace_var_kind = "ocb";
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{0}",
+ overbrace_var, char_for_brace, overbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[ocba:[01]\{\] {
+ if (overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace without termination of "
+ "previous overbrace"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[6]-'0';
+ overbrace_var = ++brace_var_counter;
+ overbrace_var_kind = "ocba";
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{1}"
+ "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{1}",
+ overbrace_var, char_for_brace, overbrace_var, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[ob:[01]\}\] {
+ if (!overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace termination without "
+ "variable overbrace start"));
+ } else if (strcmp (overbrace_var_kind, "ob")) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace started with %s "
+ "and terminated with ob"),
+ overbrace_var_kind);
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var,
+ char_for_brace);
+ overbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[ub:[01]\}\] {
+ if (!underbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable underbrace termination without "
+ "variable underbrace start"));
+ } else {
+ char_for_brace = gabc_notes_determination_text[4]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", underbrace_var,
+ char_for_brace);
+ underbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[ocb:[01]\}\] {
+ if (!overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace termination without "
+ "variable overbrace start"));
+ } else if (strcmp (overbrace_var_kind, "ocb")) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace started with %s "
+ "and terminated with ocb"),
+ overbrace_var_kind);
+ } else {
+ char_for_brace = gabc_notes_determination_text[5]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var,
+ char_for_brace);
+ overbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[ocba:[01]\}\] {
+ if (!overbrace_var) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace termination without "
+ "variable overbrace start"));
+ } else if (strcmp (overbrace_var_kind, "ocba")) {
+ gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0,
+ _("variable overbrace started with %s "
+ "and terminated with ocba"),
+ overbrace_var_kind);
+ } else {
+ char_for_brace = gabc_notes_determination_text[6]-'0';
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var,
+ char_for_brace);
+ overbrace_var = 0;
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+ }
+<INITIAL>\[nm[1-9]\] {
+ if (notesmacros[gabc_notes_determination_text[3]-'0']) {
+ gregorio_add_texverb_to_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[3]-'0']));
+ } else error();
+ }
+<INITIAL>\[gm[1-9]\] {
+ if (notesmacros[gabc_notes_determination_text[3]-'0']) {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[3]-'0']),
+ GRE_TEXVERB_GLYPH, &notes_lloc);
+ } else error();
+ }
+<INITIAL>\[em[1-9]\] {
+ if (notesmacros[gabc_notes_determination_text[3]-'0']) {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[3]-'0']),
+ GRE_TEXVERB_ELEMENT, &notes_lloc);
+ } else error();
+ }
+<INITIAL>\[altm[1-9]\] {
+ if (notesmacros[gabc_notes_determination_text[5]-'0']) {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(notesmacros[gabc_notes_determination_text[5]-'0']),
+ GRE_TEXVERB_ELEMENT, &notes_lloc);
+ } else error();
+ }
+<INITIAL>\[nv: {
+ BEGIN(texverbnote);
+ }
+<INITIAL>\[gv: {
+ BEGIN(texverbglyph);
+ }
+<INITIAL>\[ev: {
+ BEGIN(texverbelement);
+ }
+<INITIAL>\[alt: {
+ BEGIN(alt);
+ }
+<INITIAL><nlba> {
+ gregorio_add_nlba_as_note(&current_note, NLBA_BEGINNING, &notes_lloc);
+ }
+<INITIAL><\/nlba> {
+ gregorio_add_nlba_as_note(&current_note, NLBA_END, &notes_lloc);
+ }
+<overbrace>[^\]]+ {
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreOverBrace{%s}{0pt}{0pt}{%d}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+<underbrace>[^\]]+ {
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreUnderBrace{%s}{0pt}{0pt}{%d}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+<overcurlybrace>[^\]]+ {
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+<overcurlyaccentusbrace>[^\]]+ {
+ gregorio_snprintf(tempstr, sizeof tempstr,
+ "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}",
+ gabc_notes_determination_text, char_for_brace);
+ gregorio_add_texverb_to_note(&current_note, strdup(tempstr));
+ }
+<choralsign>[^\]]+ {
+ gregorio_add_cs_to_note(&current_note,
+ strdup(gabc_notes_determination_text), false);
+ }
+<choralnabc>[^\]]+ {
+ gregorio_add_cs_to_note(&current_note,
+ strdup(gabc_notes_determination_text), true);
+ }
+<texverbnote>[^\]]+ {
+ gregorio_add_texverb_to_note(&current_note,
+ strdup(gabc_notes_determination_text));
+ }
+<texverbglyph>[^\]]+ {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(gabc_notes_determination_text), GRE_TEXVERB_GLYPH,
+ &notes_lloc);
+ }
+<texverbelement>[^\]]+ {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(gabc_notes_determination_text), GRE_TEXVERB_ELEMENT,
+ &notes_lloc);
+ }
+<alt>[^\]]+ {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup(gabc_notes_determination_text), GRE_ALT, &notes_lloc);
+ }
+<texverbnote,texverbglyph,texverbelement,choralsign,choralnabc,alt,overcurlyaccentusbrace,overcurlybrace,overbrace,underbrace>\] {
+ BEGIN(INITIAL);
+ }
+\{ {
+ gregorio_add_texverb_as_note(&current_note, strdup("\\hbox to 0pt{"),
+ GRE_TEXVERB_ELEMENT, &notes_lloc);
+ }
+\} {
+ gregorio_add_texverb_as_note(&current_note,
+ strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), GRE_TEXVERB_ELEMENT,
+ &notes_lloc);
+ }
+[a-m]\+ {
+ gregorio_add_manual_custos_as_note(&current_note,
+ pitch_letter_to_height(gabc_notes_determination_text[0]),
+ &notes_lloc);
+ }
+[\t\r\n]+ /* ignore ends of line and tabs */;
+z {
+ gregorio_add_end_of_line_as_note(&current_note, GRE_END_OF_LINE,
+ &notes_lloc);
+ }
+z0 {
+ gregorio_add_custo_as_note(&current_note, &notes_lloc);
+ }
+Z {
+ gregorio_add_end_of_line_as_note(&current_note, GRE_END_OF_PAR,
+ &notes_lloc);
+ }
+(c|f)[1-4] {
+ if (gabc_notes_determination_text[0]=='c') {
+ gregorio_add_clef_change_as_note(&current_note, GRE_C_KEY_CHANGE,
+ gabc_notes_determination_text[1], &notes_lloc);
+ } else {
+ gregorio_add_clef_change_as_note(&current_note, GRE_F_KEY_CHANGE,
+ gabc_notes_determination_text[1], &notes_lloc);
+ }
+ }
+(cb|fb)[1-4] {
+ if (gabc_notes_determination_text[0]=='c') {
+ gregorio_add_clef_change_as_note(&current_note,
+ GRE_C_KEY_CHANGE_FLATED, gabc_notes_determination_text[2],
+ &notes_lloc);
+ } else {
+ gregorio_add_clef_change_as_note(&current_note,
+ GRE_F_KEY_CHANGE_FLATED, gabc_notes_determination_text[2],
+ &notes_lloc);
+ }
+ }
+` {
+ add_bar_as_note(B_VIRGULA);
+ }
+, {
+ add_bar_as_note(B_DIVISIO_MINIMA);
+ }
+,1 {
+ add_bar_as_note(B_DIVISIO_MINOR_D1);
+ }
+,2 {
+ add_bar_as_note(B_DIVISIO_MINOR_D2);
+ }
+,3 {
+ add_bar_as_note(B_DIVISIO_MINOR_D3);
+ }
+,4 {
+ add_bar_as_note(B_DIVISIO_MINOR_D4);
+ }
+,5 {
+ add_bar_as_note(B_DIVISIO_MINOR_D5);
+ }
+,6 {
+ add_bar_as_note(B_DIVISIO_MINOR_D6);
+ }
+; {
+ add_bar_as_note(B_DIVISIO_MINOR);
+ }
+;1 {
+ add_bar_as_note(B_DIVISIO_MINOR_D1);
+ }
+;2 {
+ add_bar_as_note(B_DIVISIO_MINOR_D2);
+ }
+;3 {
+ add_bar_as_note(B_DIVISIO_MINOR_D3);
+ }
+;4 {
+ add_bar_as_note(B_DIVISIO_MINOR_D4);
+ }
+;5 {
+ add_bar_as_note(B_DIVISIO_MINOR_D5);
+ }
+;6 {
+ add_bar_as_note(B_DIVISIO_MINOR_D6);
+ }
+: {
+ add_bar_as_note(B_DIVISIO_MAIOR);
+ }
+:: {
+ add_bar_as_note(B_DIVISIO_FINALIS);
+ }
+r {
+ gregorio_change_shape(current_note, S_PUNCTUM_CAVUM);
+ }
+R {
+ gregorio_change_shape(current_note, S_LINEA_PUNCTUM);
+ }
+r0 {
+ gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM);
+ }
+r1 {
+ gregorio_add_special_sign(current_note, _ACCENTUS);
+ }
+r2 {
+ gregorio_add_special_sign(current_note, _ACCENTUS_REVERSUS);
+ }
+r3 {
+ gregorio_add_special_sign(current_note, _CIRCULUS);
+ }
+r4 {
+ gregorio_add_special_sign(current_note, _SEMI_CIRCULUS);
+ }
+r5 {
+ gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS);
+ }
+[a-mA-M]x {
+ add_alteration(GRE_FLAT);
+ }
+[a-mA-M]# {
+ add_alteration(GRE_SHARP);
+ }
+[a-mA-M]y {
+ add_alteration(GRE_NATURAL);
+ }
+\/ {
+ gregorio_add_space_as_note(&current_note, SP_NEUMATIC_CUT, &notes_lloc);
+ }
+\/\/ {
+ gregorio_add_space_as_note(&current_note, SP_LARGER_SPACE, &notes_lloc);
+ }
+\ {
+ gregorio_add_space_as_note(&current_note, SP_GLYPH_SPACE, &notes_lloc);
+ }
+!\/ {
+ gregorio_add_space_as_note(&current_note, SP_NEUMATIC_CUT_NB,
+ &notes_lloc);
+ }
+!\/\/ {
+ gregorio_add_space_as_note(&current_note, SP_LARGER_SPACE_NB,
+ &notes_lloc);
+ }
+!\ {
+ gregorio_add_space_as_note(&current_note, SP_GLYPH_SPACE_NB,
+ &notes_lloc);
+ }
+!/[^\/ ] {
+ gregorio_add_space_as_note(&current_note, SP_ZERO_WIDTH, &notes_lloc);
+ }
+= {
+ gregorio_change_shape(current_note, S_LINEA);
+ }
+[a-mA-M]vv {
+ lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+[a-mA-M]vvv {
+ lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+[a-mA-M]VV {
+ lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+[a-mA-M]VVV {
+ lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+[a-mA-M]ss {
+ lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+[a-mA-M]ss(\<|\>) {
+ lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTA);
+ }
+[a-mA-M]sss {
+ lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA);
+ }
+[a-mA-M]sss(\<|\>) {
+ lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTA);
+ }
+[a-mA-M] {
+ lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN,
+ L_NO_LIQUESCENTIA);
+ }
+-[a-mA-M] {
+ lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN,
+ L_INITIO_DEBILIS);
+ }
+\'[01]? {
+ add_sign(_V_EPISEMUS);
+ }
+_[0-5]* {
+ add_h_episemus();
+ }
+\.[01]? {
+ add_sign(_PUNCTUM_MORA);
+ }
+~ {
+ gregorio_add_liquescentia(current_note, L_DEMINUTUS);
+ }
+> {
+ gregorio_add_liquescentia(current_note, L_AUCTUS_DESCENDENS);
+ }
+\< {
+ gregorio_add_liquescentia(current_note, L_AUCTUS_ASCENDENS);
+ }
+q {
+ gregorio_change_shape(current_note, S_QUADRATUM);
+ }
+o {
+ gregorio_change_shape(current_note, S_ORISCUS);
+ }
+O {
+ gregorio_change_shape(current_note, S_ORISCUS_SCAPUS);
+ }
+w {
+ gregorio_change_shape(current_note, S_QUILISMA);
+ }
+W {
+ gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM);
+ }
+v {
+ gregorio_change_shape(current_note, S_VIRGA);
+ }
+V {
+ gregorio_change_shape(current_note, S_VIRGA_REVERSA);
+ }
+s {
+ gregorio_change_shape(current_note, S_STROPHA);
+ }
+. {
+ gregorio_messagef("det_notes_from_string", VERBOSITY_ERROR, 0,
+ _("unrecognized character: \"%c\""),
+ gabc_notes_determination_text[0]);
+ }
+
+%%
+
+gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10],
+ gregorio_scanner_location *loc)
+{
+ int i;
+ YY_BUFFER_STATE buf;
+
+ notes_lloc.first_line = loc->first_line;
+ notes_lloc.first_column = loc->first_column;
+ notes_lloc.first_offset = loc->first_offset;
+ /* yes... I do mean to set values from loc->first_* */
+ notes_lloc.last_line = loc->first_line;
+ notes_lloc.last_column = loc->first_column;
+ notes_lloc.last_offset = loc->first_offset;
+
+ /* a small optimization could uccur here: we could do it only once at the
+ * beginning of the score, not at each syllable */
+ for (i = 0; i < 10; i++) {
+ notesmacros[i] = newmacros[i];
+ }
+ nbof_isolated_episemus = 0;
+ current_note = NULL;
+ buf = yy_scan_string(str);
+ yylex();
+ yy_flush_buffer(buf);
+ yy_delete_buffer(buf);
+ gregorio_go_to_first_note(&current_note);
+ return current_note;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.c
new file mode 100644
index 00000000000..09228015645
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.c
@@ -0,0 +1,2772 @@
+#line 2 "gabc/gabc-score-determination-l.c"
+
+#line 4 "gabc/gabc-score-determination-l.c"
+
+#define YY_INT_ALIGNED long int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer gabc_score_determination__create_buffer
+#define yy_delete_buffer gabc_score_determination__delete_buffer
+#define yy_flex_debug gabc_score_determination__flex_debug
+#define yy_init_buffer gabc_score_determination__init_buffer
+#define yy_flush_buffer gabc_score_determination__flush_buffer
+#define yy_load_buffer_state gabc_score_determination__load_buffer_state
+#define yy_switch_to_buffer gabc_score_determination__switch_to_buffer
+#define yyin gabc_score_determination_in
+#define yyleng gabc_score_determination_leng
+#define yylex gabc_score_determination_lex
+#define yylineno gabc_score_determination_lineno
+#define yyout gabc_score_determination_out
+#define yyrestart gabc_score_determination_restart
+#define yytext gabc_score_determination_text
+#define yywrap gabc_score_determination_wrap
+#define yyalloc gabc_score_determination_alloc
+#define yyrealloc gabc_score_determination_realloc
+#define yyfree gabc_score_determination_free
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 39
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE gabc_score_determination_restart(gabc_score_determination_in )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t gabc_score_determination_leng;
+
+extern FILE *gabc_score_determination_in, *gabc_score_determination_out;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+ #define YY_LINENO_REWIND_TO(ptr)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up gabc_score_determination_text. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up gabc_score_determination_text again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ yy_size_t yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via gabc_score_determination_restart()), so that the user can continue scanning by
+ * just pointing gabc_score_determination_in at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when gabc_score_determination_text is formed. */
+static char yy_hold_char;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t gabc_score_determination_leng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow gabc_score_determination_wrap()'s to do buffer switches
+ * instead of setting up a fresh gabc_score_determination_in. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void gabc_score_determination_restart (FILE *input_file );
+void gabc_score_determination__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE gabc_score_determination__create_buffer (FILE *file,int size );
+void gabc_score_determination__delete_buffer (YY_BUFFER_STATE b );
+void gabc_score_determination__flush_buffer (YY_BUFFER_STATE b );
+void gabc_score_determination_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void gabc_score_determination_pop_buffer_state (void );
+
+static void gabc_score_determination_ensure_buffer_stack (void );
+static void gabc_score_determination__load_buffer_state (void );
+static void gabc_score_determination__init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER gabc_score_determination__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE gabc_score_determination__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE gabc_score_determination__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE gabc_score_determination__scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *gabc_score_determination_alloc (yy_size_t );
+void *gabc_score_determination_realloc (void *,yy_size_t );
+void gabc_score_determination_free (void * );
+
+#define yy_new_buffer gabc_score_determination__create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ gabc_score_determination_ensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ gabc_score_determination__create_buffer(gabc_score_determination_in,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ gabc_score_determination_ensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ gabc_score_determination__create_buffer(gabc_score_determination_in,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define gabc_score_determination_wrap() 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *gabc_score_determination_in = (FILE *) 0, *gabc_score_determination_out = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int gabc_score_determination_lineno;
+
+int gabc_score_determination_lineno = 1;
+
+extern char *gabc_score_determination_text;
+#define yytext_ptr gabc_score_determination_text
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up gabc_score_determination_text.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ gabc_score_determination_leng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 83
+#define YY_END_OF_BUFFER 84
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int32_t yy_accept[430] =
+ { 0,
+ 0, 1, 7, 7, 0, 0, 78, 78, 59, 59,
+ 65, 65, 62, 62, 5, 5, 70, 70, 84, 41,
+ 83, 41, 41, 6, 41, 41, 41, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 2, 2,
+ 3, 3, 1, 7, 7, 83, 42, 60, 77, 66,
+ 75, 76, 67, 68, 78, 79, 81, 80, 59, 66,
+ 65, 66, 62, 61, 5, 4, 70, 66, 40, 0,
+ 39, 6, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 1, 7,
+
+ 7, 0, 7, 7, 0, 7, 8, 8, 42, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 78, 82, 59, 0, 65, 0, 62, 61, 5,
+ 4, 70, 0, 39, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 53, 51, 0, 43, 0, 0,
+ 0, 0, 0, 63, 74, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 28, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+
+ 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 72, 0, 55, 57, 47, 49, 54, 52,
+ 46, 0, 0, 0, 0, 64, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 73,
+ 0, 69, 0, 56, 58, 48, 50, 0, 0, 0,
+ 23, 0, 0, 9, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 44, 71, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 45, 0, 18, 0, 0, 0, 0, 0, 0,
+ 0, 32, 0, 0, 0, 15, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
+ 17, 0, 0, 0, 0, 0, 25, 37, 0, 0,
+ 0, 0, 0, 38, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 14, 0, 29, 0, 0, 0, 0,
+ 19, 30, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 0, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 12, 0, 0, 31, 36, 0,
+ 0, 10, 0, 35, 0, 0, 0, 0, 0, 33,
+ 0, 0, 26, 0, 0, 0, 0, 27, 0
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 5, 1, 1, 6, 1, 7, 8, 1, 9,
+ 10, 1, 1, 1, 11, 1, 12, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 14, 15, 16,
+ 1, 17, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 18, 1, 19, 1, 1, 1, 20, 21, 22, 23,
+
+ 24, 25, 26, 27, 28, 1, 29, 30, 31, 32,
+ 33, 34, 1, 35, 36, 37, 38, 39, 1, 40,
+ 41, 1, 42, 43, 44, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 45, 1, 1, 1,
+ 46, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 47, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int32_t yy_meta[48] =
+ { 0,
+ 1, 1, 2, 3, 1, 1, 4, 5, 4, 5,
+ 1, 1, 1, 1, 6, 7, 1, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 8, 5, 8, 1, 1, 1
+ } ;
+
+static yyconst flex_int32_t yy_base[451] =
+ { 0,
+ 0, 37, 1, 9, 70, 78, 7, 19, 3, 36,
+ 634, 633, 5, 31, 50, 52, 632, 631, 646, 651,
+ 651, 88, 634, 639, 66, 610, 48, 22, 82, 610,
+ 621, 83, 70, 39, 78, 605, 603, 610, 106, 115,
+ 651, 120, 83, 122, 128, 130, 0, 651, 651, 134,
+ 625, 651, 651, 651, 0, 651, 136, 651, 0, 124,
+ 0, 624, 0, 146, 0, 148, 0, 623, 156, 160,
+ 0, 651, 602, 598, 595, 598, 598, 598, 591, 602,
+ 605, 593, 600, 595, 590, 589, 583, 596, 90, 587,
+ 595, 591, 582, 573, 593, 588, 576, 165, 129, 174,
+
+ 176, 178, 595, 180, 0, 182, 184, 651, 0, 81,
+ 579, 591, 590, 568, 588, 574, 113, 566, 572, 584,
+ 581, 0, 196, 0, 181, 0, 560, 0, 201, 0,
+ 203, 0, 578, 0, 564, 576, 568, 565, 556, 561,
+ 567, 579, 567, 564, 561, 549, 559, 546, 559, 558,
+ 559, 556, 558, 558, 549, 541, 545, 542, 538, 546,
+ 556, 532, 539, 531, 651, 651, 550, 651, 545, 548,
+ 547, 546, 545, 651, 651, 544, 543, 542, 131, 521,
+ 527, 539, 525, 517, 521, 519, 651, 527, 526, 651,
+ 518, 537, 512, 513, 517, 506, 507, 507, 651, 530,
+
+ 651, 516, 503, 516, 513, 512, 499, 523, 495, 515,
+ 510, 513, 651, 509, 651, 651, 651, 651, 651, 651,
+ 651, 511, 510, 509, 508, 651, 487, 503, 496, 486,
+ 485, 487, 505, 27, 497, 481, 495, 494, 491, 651,
+ 482, 476, 482, 485, 497, 651, 485, 474, 475, 651,
+ 484, 651, 486, 651, 651, 651, 651, 485, 464, 476,
+ 651, 471, 461, 651, 464, 472, 458, 466, 463, 466,
+ 456, 462, 478, 455, 476, 464, 450, 451, 463, 465,
+ 651, 651, 453, 445, 447, 458, 443, 441, 451, 441,
+ 462, 448, 443, 438, 436, 436, 433, 433, 437, 427,
+
+ 452, 651, 429, 651, 435, 425, 418, 422, 434, 419,
+ 419, 651, 420, 429, 427, 651, 431, 416, 187, 425,
+ 414, 415, 435, 404, 409, 415, 431, 417, 403, 402,
+ 402, 426, 401, 394, 410, 396, 396, 398, 651, 394,
+ 651, 401, 395, 406, 386, 384, 413, 651, 384, 385,
+ 386, 385, 391, 651, 382, 395, 390, 383, 373, 402,
+ 382, 175, 378, 651, 382, 651, 376, 380, 380, 379,
+ 651, 651, 380, 380, 379, 365, 373, 374, 367, 361,
+ 373, 359, 362, 651, 369, 360, 370, 364, 379, 361,
+ 357, 651, 355, 362, 348, 347, 331, 333, 322, 324,
+
+ 310, 309, 308, 285, 651, 200, 184, 651, 651, 191,
+ 188, 651, 175, 651, 164, 170, 168, 168, 150, 651,
+ 133, 108, 651, 69, 73, 49, 1, 651, 651, 221,
+ 229, 237, 245, 253, 261, 269, 277, 285, 293, 301,
+ 309, 317, 323, 331, 337, 345, 353, 361, 369, 377
+ } ;
+
+static yyconst flex_int32_t yy_def[451] =
+ { 0,
+ 430, 430, 431, 431, 432, 432, 433, 433, 434, 434,
+ 435, 435, 436, 436, 437, 437, 438, 438, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 439, 440, 441, 442, 429, 429, 429,
+ 429, 429, 429, 429, 443, 429, 429, 429, 444, 50,
+ 445, 429, 446, 429, 447, 429, 448, 429, 429, 429,
+ 449, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 439,
+
+ 440, 441, 440, 440, 450, 441, 429, 429, 442, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 443, 429, 444, 429, 445, 429, 446, 429, 447,
+ 429, 448, 429, 449, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 450, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 0, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429
+ } ;
+
+static yyconst flex_int32_t yy_nxt[699] =
+ { 0,
+ 429, 429, 21, 45, 45, 429, 22, 64, 64, 429,
+ 23, 45, 45, 24, 56, 46, 57, 429, 60, 25,
+ 26, 27, 28, 46, 428, 29, 56, 30, 57, 31,
+ 32, 33, 34, 64, 64, 35, 36, 37, 38, 39,
+ 40, 79, 41, 42, 53, 80, 54, 23, 265, 58,
+ 24, 60, 66, 66, 66, 66, 25, 26, 27, 28,
+ 91, 58, 29, 92, 30, 266, 31, 32, 33, 34,
+ 427, 77, 35, 36, 37, 38, 48, 53, 49, 54,
+ 78, 43, 43, 43, 48, 50, 49, 51, 52, 89,
+ 69, 69, 426, 50, 70, 51, 52, 73, 425, 93,
+
+ 74, 81, 86, 75, 162, 82, 87, 90, 98, 98,
+ 151, 53, 163, 54, 94, 88, 83, 98, 98, 53,
+ 152, 54, 69, 69, 101, 101, 70, 99, 99, 99,
+ 104, 104, 107, 107, 170, 125, 102, 123, 123, 123,
+ 123, 424, 105, 429, 108, 110, 171, 429, 129, 129,
+ 131, 131, 222, 111, 112, 113, 423, 114, 69, 69,
+ 422, 115, 69, 69, 223, 116, 70, 98, 98, 117,
+ 118, 119, 120, 99, 99, 99, 101, 101, 104, 104,
+ 429, 429, 104, 104, 101, 101, 107, 107, 102, 421,
+ 105, 420, 429, 419, 105, 418, 102, 123, 123, 123,
+
+ 123, 176, 177, 129, 129, 131, 131, 335, 178, 375,
+ 376, 417, 163, 416, 415, 414, 179, 180, 181, 413,
+ 336, 20, 20, 20, 20, 20, 20, 20, 20, 44,
+ 44, 44, 44, 44, 44, 44, 44, 47, 47, 47,
+ 47, 47, 47, 47, 47, 55, 55, 55, 55, 55,
+ 55, 55, 55, 59, 59, 59, 59, 59, 59, 59,
+ 59, 61, 61, 61, 61, 61, 61, 61, 61, 63,
+ 63, 63, 63, 63, 63, 63, 63, 65, 65, 65,
+ 65, 65, 65, 65, 65, 67, 67, 67, 67, 67,
+ 67, 67, 67, 100, 100, 100, 100, 100, 100, 100,
+
+ 100, 103, 103, 103, 103, 103, 103, 103, 103, 106,
+ 106, 106, 106, 106, 106, 106, 106, 109, 109, 109,
+ 412, 109, 109, 122, 122, 122, 122, 411, 122, 122,
+ 122, 124, 124, 124, 124, 124, 124, 126, 126, 126,
+ 126, 126, 126, 410, 126, 128, 409, 408, 128, 128,
+ 128, 128, 128, 130, 407, 406, 130, 130, 130, 130,
+ 130, 132, 132, 132, 132, 132, 132, 405, 132, 134,
+ 404, 134, 134, 134, 134, 134, 134, 161, 161, 161,
+ 161, 161, 403, 161, 161, 402, 401, 400, 399, 398,
+ 397, 396, 395, 394, 393, 392, 391, 390, 389, 388,
+
+ 387, 386, 385, 384, 383, 382, 381, 380, 379, 378,
+ 377, 374, 373, 372, 371, 370, 369, 368, 367, 366,
+ 365, 364, 363, 362, 361, 360, 359, 358, 357, 356,
+ 355, 354, 353, 352, 351, 350, 349, 348, 347, 346,
+ 345, 344, 343, 342, 341, 340, 339, 338, 337, 334,
+ 333, 332, 331, 330, 329, 328, 327, 326, 325, 324,
+ 323, 322, 321, 320, 319, 318, 317, 316, 315, 314,
+ 313, 312, 311, 310, 309, 308, 307, 306, 305, 304,
+ 303, 302, 301, 300, 299, 298, 297, 296, 295, 294,
+ 293, 292, 291, 290, 289, 288, 287, 286, 285, 284,
+
+ 283, 282, 281, 280, 279, 278, 277, 276, 275, 274,
+ 273, 272, 271, 270, 269, 268, 267, 264, 263, 262,
+ 261, 260, 259, 258, 257, 256, 255, 254, 253, 252,
+ 251, 250, 249, 248, 247, 246, 245, 244, 243, 242,
+ 241, 240, 239, 238, 237, 236, 235, 234, 233, 232,
+ 231, 230, 229, 228, 227, 226, 225, 224, 221, 220,
+ 219, 218, 217, 216, 215, 214, 213, 212, 211, 210,
+ 105, 209, 208, 207, 206, 205, 204, 203, 202, 201,
+ 200, 199, 198, 197, 196, 195, 194, 193, 192, 191,
+ 190, 189, 188, 187, 186, 185, 184, 183, 182, 175,
+
+ 174, 173, 172, 169, 168, 167, 166, 165, 164, 105,
+ 160, 159, 158, 157, 156, 155, 154, 153, 150, 149,
+ 148, 147, 146, 145, 144, 143, 142, 141, 140, 139,
+ 138, 137, 136, 135, 133, 127, 121, 97, 96, 95,
+ 85, 84, 76, 72, 71, 429, 68, 68, 62, 62,
+ 19, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429
+
+ } ;
+
+static yyconst flex_int32_t yy_chk[699] =
+ { 0,
+ 0, 0, 1, 3, 3, 0, 1, 13, 13, 0,
+ 1, 4, 4, 1, 7, 3, 7, 0, 9, 1,
+ 1, 1, 1, 4, 427, 1, 8, 1, 8, 1,
+ 1, 1, 1, 14, 14, 1, 1, 1, 1, 2,
+ 2, 28, 2, 2, 9, 28, 9, 2, 234, 7,
+ 2, 10, 15, 15, 16, 16, 2, 2, 2, 2,
+ 34, 8, 2, 34, 2, 234, 2, 2, 2, 2,
+ 426, 27, 2, 2, 2, 2, 5, 10, 5, 10,
+ 27, 2, 2, 2, 6, 5, 6, 5, 5, 33,
+ 22, 22, 425, 6, 22, 6, 6, 25, 424, 35,
+
+ 25, 29, 32, 25, 110, 29, 32, 33, 39, 39,
+ 89, 5, 110, 5, 35, 32, 29, 40, 40, 6,
+ 89, 6, 42, 42, 44, 44, 42, 43, 43, 43,
+ 45, 45, 46, 46, 117, 60, 44, 57, 57, 57,
+ 57, 422, 45, 60, 46, 50, 117, 60, 64, 64,
+ 66, 66, 179, 50, 50, 50, 421, 50, 69, 69,
+ 419, 50, 70, 70, 179, 50, 70, 98, 98, 50,
+ 50, 50, 50, 99, 99, 99, 100, 100, 101, 101,
+ 102, 102, 104, 104, 106, 106, 107, 107, 100, 418,
+ 101, 417, 102, 416, 104, 415, 106, 123, 123, 123,
+
+ 123, 125, 125, 129, 129, 131, 131, 319, 125, 362,
+ 362, 413, 125, 411, 410, 407, 125, 125, 125, 406,
+ 319, 430, 430, 430, 430, 430, 430, 430, 430, 431,
+ 431, 431, 431, 431, 431, 431, 431, 432, 432, 432,
+ 432, 432, 432, 432, 432, 433, 433, 433, 433, 433,
+ 433, 433, 433, 434, 434, 434, 434, 434, 434, 434,
+ 434, 435, 435, 435, 435, 435, 435, 435, 435, 436,
+ 436, 436, 436, 436, 436, 436, 436, 437, 437, 437,
+ 437, 437, 437, 437, 437, 438, 438, 438, 438, 438,
+ 438, 438, 438, 439, 439, 439, 439, 439, 439, 439,
+
+ 439, 440, 440, 440, 440, 440, 440, 440, 440, 441,
+ 441, 441, 441, 441, 441, 441, 441, 442, 442, 442,
+ 404, 442, 442, 443, 443, 443, 443, 403, 443, 443,
+ 443, 444, 444, 444, 444, 444, 444, 445, 445, 445,
+ 445, 445, 445, 402, 445, 446, 401, 400, 446, 446,
+ 446, 446, 446, 447, 399, 398, 447, 447, 447, 447,
+ 447, 448, 448, 448, 448, 448, 448, 397, 448, 449,
+ 396, 449, 449, 449, 449, 449, 449, 450, 450, 450,
+ 450, 450, 395, 450, 450, 394, 393, 391, 390, 389,
+ 388, 387, 386, 385, 383, 382, 381, 380, 379, 378,
+
+ 377, 376, 375, 374, 373, 370, 369, 368, 367, 365,
+ 363, 361, 360, 359, 358, 357, 356, 355, 353, 352,
+ 351, 350, 349, 347, 346, 345, 344, 343, 342, 340,
+ 338, 337, 336, 335, 334, 333, 332, 331, 330, 329,
+ 328, 327, 326, 325, 324, 323, 322, 321, 320, 318,
+ 317, 315, 314, 313, 311, 310, 309, 308, 307, 306,
+ 305, 303, 301, 300, 299, 298, 297, 296, 295, 294,
+ 293, 292, 291, 290, 289, 288, 287, 286, 285, 284,
+ 283, 280, 279, 278, 277, 276, 275, 274, 273, 272,
+ 271, 270, 269, 268, 267, 266, 265, 263, 262, 260,
+
+ 259, 258, 253, 251, 249, 248, 247, 245, 244, 243,
+ 242, 241, 239, 238, 237, 236, 235, 233, 232, 231,
+ 230, 229, 228, 227, 225, 224, 223, 222, 214, 212,
+ 211, 210, 209, 208, 207, 206, 205, 204, 203, 202,
+ 200, 198, 197, 196, 195, 194, 193, 192, 191, 189,
+ 188, 186, 185, 184, 183, 182, 181, 180, 178, 177,
+ 176, 173, 172, 171, 170, 169, 167, 164, 163, 162,
+ 161, 160, 159, 158, 157, 156, 155, 154, 153, 152,
+ 151, 150, 149, 148, 147, 146, 145, 144, 143, 142,
+ 141, 140, 139, 138, 137, 136, 135, 133, 127, 121,
+
+ 120, 119, 118, 116, 115, 114, 113, 112, 111, 103,
+ 97, 96, 95, 94, 93, 92, 91, 90, 88, 87,
+ 86, 85, 84, 83, 82, 81, 80, 79, 78, 77,
+ 76, 75, 74, 73, 68, 62, 51, 38, 37, 36,
+ 31, 30, 26, 24, 23, 19, 18, 17, 12, 11,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
+ 429, 429, 429, 429, 429, 429, 429, 429
+
+ } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int gabc_score_determination__flex_debug;
+int gabc_score_determination__flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *gabc_score_determination_text;
+#line 1 "gabc/gabc-score-determination.l"
+#line 2 "gabc/gabc-score-determination.l"
+/*
+ * Gregorio score determination in gabc input.
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "struct.h"
+#include "messages.h"
+
+#include "gabc.h"
+#include "gabc-score-determination.h"
+#include "gabc-score-determination-y.h"
+
+static unsigned char style_stack = 0;
+
+#define YY_NO_INPUT
+
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) { \
+ int c = '*'; \
+ size_t n; \
+ for (n = 0; n < max_size \
+ && (c = getc(gabc_score_determination_in)) != EOF \
+ && c != '\n'; ++n ) { \
+ buf[n] = (char) c; \
+ } \
+ if (c == '\n') { \
+ buf[n++] = (char) c; \
+ } \
+ if (c == EOF && ferror(gabc_score_determination_in)) { \
+ YY_FATAL_ERROR("input in flex scanner failed"); \
+ } \
+ result = n; \
+ } else { \
+ errno=0; \
+ while ((result = fread(buf, 1, max_size, gabc_score_determination_in)) \
+ == 0 && ferror(gabc_score_determination_in)) { \
+ if (errno != EINTR) { \
+ YY_FATAL_ERROR("input in flex scanner failed"); \
+ break; \
+ } \
+ errno = 0; \
+ clearerr(gabc_score_determination_in); \
+ } \
+ } \
+ gabc_digest(buf, result)
+
+#define YY_USER_ACTION gabc_update_location(&gabc_score_determination_lloc, \
+ gabc_score_determination_text, gabc_score_determination_leng);
+
+
+
+
+
+
+
+
+
+/* The expression for attribute below is rather messy because we allow
+for (a) single-line values, ending with a semicolon at end of line or a
+double semicolon, (b) multi-line values, which end at a double
+semicolon. */
+#line 853 "gabc/gabc-score-determination-l.c"
+
+#define INITIAL 0
+#define attribute 1
+#define score 2
+#define notes 3
+#define style 4
+#define verb 5
+#define comments 6
+#define inicomments 7
+#define alt 8
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int gabc_score_determination_lex_destroy (void );
+
+int gabc_score_determination_get_debug (void );
+
+void gabc_score_determination_set_debug (int debug_flag );
+
+YY_EXTRA_TYPE gabc_score_determination_get_extra (void );
+
+void gabc_score_determination_set_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *gabc_score_determination_get_in (void );
+
+void gabc_score_determination_set_in (FILE * in_str );
+
+FILE *gabc_score_determination_get_out (void );
+
+void gabc_score_determination_set_out (FILE * out_str );
+
+yy_size_t gabc_score_determination_get_leng (void );
+
+char *gabc_score_determination_get_text (void );
+
+int gabc_score_determination_get_lineno (void );
+
+void gabc_score_determination_set_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int gabc_score_determination_wrap (void );
+#else
+extern int gabc_score_determination_wrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+ static int yy_start_stack_ptr = 0;
+ static int yy_start_stack_depth = 0;
+ static int *yy_start_stack = NULL;
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( gabc_score_determination_text, gabc_score_determination_leng, 1, gabc_score_determination_out )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ size_t n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( gabc_score_determination_in )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( gabc_score_determination_in ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, gabc_score_determination_in))==0 && ferror(gabc_score_determination_in)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(gabc_score_determination_in); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int gabc_score_determination_lex (void);
+
+#define YY_DECL int gabc_score_determination_lex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after gabc_score_determination_text and gabc_score_determination_leng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ if ( gabc_score_determination_leng > 0 ) \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
+ (gabc_score_determination_text[gabc_score_determination_leng - 1] == '\n'); \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! gabc_score_determination_in )
+ gabc_score_determination_in = stdin;
+
+ if ( ! gabc_score_determination_out )
+ gabc_score_determination_out = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ gabc_score_determination_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ gabc_score_determination__create_buffer(gabc_score_determination_in,YY_BUF_SIZE );
+ }
+
+ gabc_score_determination__load_buffer_state( );
+ }
+
+ {
+#line 102 "gabc/gabc-score-determination.l"
+
+#line 1077 "gabc/gabc-score-determination-l.c"
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of gabc_score_determination_text. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+ yy_current_state += YY_AT_BOL();
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 430 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_base[yy_current_state] != 651 );
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+ if ( yy_act == 0 )
+ { /* have to back up */
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ yy_act = yy_accept[yy_current_state];
+ }
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = (yy_hold_char);
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 103 "gabc/gabc-score-determination.l"
+{
+ /* BOM written by a lot of windows softwares when they write UTF-8 */
+ }
+ YY_BREAK
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+#line 106 "gabc/gabc-score-determination.l"
+{
+ /* ignoring empty lines */
+ }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 109 "gabc/gabc-score-determination.l"
+{
+ BEGIN(inicomments);
+ }
+ YY_BREAK
+case 4:
+/* rule 4 can match eol */
+YY_RULE_SETUP
+#line 112 "gabc/gabc-score-determination.l"
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 115 "gabc/gabc-score-determination.l"
+{
+ /* ignored */
+ }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 118 "gabc/gabc-score-determination.l"
+{
+ BEGIN(attribute);
+ return COLON;
+ }
+ YY_BREAK
+case 7:
+/* rule 7 can match eol */
+YY_RULE_SETUP
+#line 122 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return ATTRIBUTE;
+ }
+ YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+#line 126 "gabc/gabc-score-determination.l"
+{
+ BEGIN(INITIAL);
+ return SEMICOLON;
+ }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 130 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.character = gabc_score_determination_text[5];
+ return DEF_MACRO;
+ }
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 134 "gabc/gabc-score-determination.l"
+{
+ return NUMBER_OF_VOICES;
+ }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 137 "gabc/gabc-score-determination.l"
+{
+ return NAME;
+ }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 140 "gabc/gabc-score-determination.l"
+{
+ return SCORE_COPYRIGHT;
+ }
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 143 "gabc/gabc-score-determination.l"
+{
+ return GABC_COPYRIGHT;
+ }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 146 "gabc/gabc-score-determination.l"
+{
+ return OFFICE_PART;
+ }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 149 "gabc/gabc-score-determination.l"
+{
+ return OCCASION;
+ }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 152 "gabc/gabc-score-determination.l"
+{
+ return METER;
+ }
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 155 "gabc/gabc-score-determination.l"
+{
+ return COMMENTARY;
+ }
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 158 "gabc/gabc-score-determination.l"
+{
+ return ARRANGER;
+ }
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 161 "gabc/gabc-score-determination.l"
+{
+ return GABC_VERSION;
+ }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 164 "gabc/gabc-score-determination.l"
+{
+ return INITIAL_STYLE;
+ }
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 167 "gabc/gabc-score-determination.l"
+{
+ return MODE;
+ }
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 170 "gabc/gabc-score-determination.l"
+{
+ return ANNOTATION;
+ }
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 173 "gabc/gabc-score-determination.l"
+{
+ return AUTHOR;
+ }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 176 "gabc/gabc-score-determination.l"
+{
+ return DATE;
+ }
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 179 "gabc/gabc-score-determination.l"
+{
+ return MANUSCRIPT;
+ }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 182 "gabc/gabc-score-determination.l"
+{
+ return MANUSCRIPT_REFERENCE;
+ }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 185 "gabc/gabc-score-determination.l"
+{
+ return MANUSCRIPT_STORAGE_PLACE;
+ }
+ YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 188 "gabc/gabc-score-determination.l"
+{
+ return BOOK;
+ }
+ YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 191 "gabc/gabc-score-determination.l"
+{
+ return TRANSCRIBER;
+ }
+ YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 194 "gabc/gabc-score-determination.l"
+{
+ return GENERATED_BY;
+ }
+ YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 197 "gabc/gabc-score-determination.l"
+{
+ return CENTERING_SCHEME;
+ }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 200 "gabc/gabc-score-determination.l"
+{
+ return LANGUAGE;
+ }
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 203 "gabc/gabc-score-determination.l"
+{
+ return TRANSCRIPTION_DATE;
+ }
+ YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 206 "gabc/gabc-score-determination.l"
+{
+ return STYLE;
+ }
+ YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 209 "gabc/gabc-score-determination.l"
+{
+ return VIRGULA_POSITION;
+ }
+ YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 212 "gabc/gabc-score-determination.l"
+{
+ return GREGORIOTEX_FONT;
+ }
+ YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 215 "gabc/gabc-score-determination.l"
+{
+ return NABC_LINES;
+ }
+ YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 218 "gabc/gabc-score-determination.l"
+{
+ return USER_NOTES;
+ }
+ YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 221 "gabc/gabc-score-determination.l"
+{
+ return VOICE_CHANGE;
+ }
+ YY_BREAK
+case 40:
+/* rule 40 can match eol */
+YY_RULE_SETUP
+#line 224 "gabc/gabc-score-determination.l"
+{
+ BEGIN(score);
+ return END_OF_DEFINITIONS;
+ }
+ YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 228 "gabc/gabc-score-determination.l"
+{
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ _("unrecognized character: \"%c\" in definition part"),
+ gabc_score_determination_text[0]);
+ }
+ YY_BREAK
+case 42:
+/* rule 42 can match eol */
+YY_RULE_SETUP
+#line 233 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+ YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 237 "gabc/gabc-score-determination.l"
+{
+ BEGIN(style);
+ style_stack ++;
+ return I_BEGINNING;
+ }
+ YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 242 "gabc/gabc-score-determination.l"
+{
+ return BNLBA;
+ }
+ YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 245 "gabc/gabc-score-determination.l"
+{
+ return ENLBA;
+ }
+ YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 248 "gabc/gabc-score-determination.l"
+{
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return I_END;
+ }
+ YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 255 "gabc/gabc-score-determination.l"
+{
+ BEGIN(style);
+ style_stack ++;
+ return TT_BEGINNING;
+ }
+ YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 260 "gabc/gabc-score-determination.l"
+{
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return TT_END;
+ }
+ YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 267 "gabc/gabc-score-determination.l"
+{
+ BEGIN(style);
+ style_stack ++;
+ return UL_BEGINNING;
+ }
+ YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 272 "gabc/gabc-score-determination.l"
+{
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return UL_END;
+ }
+ YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 279 "gabc/gabc-score-determination.l"
+{
+ BEGIN(style);
+ style_stack ++;
+ return C_BEGINNING;
+ }
+ YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 284 "gabc/gabc-score-determination.l"
+{
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return C_END;
+ }
+ YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 291 "gabc/gabc-score-determination.l"
+{
+ BEGIN(style);
+ style_stack ++;
+ return B_BEGINNING;
+ }
+ YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 296 "gabc/gabc-score-determination.l"
+{
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return B_END;
+ }
+ YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 303 "gabc/gabc-score-determination.l"
+{
+ BEGIN(style);
+ style_stack ++;
+ return SC_BEGINNING;
+ }
+ YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 308 "gabc/gabc-score-determination.l"
+{
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return SC_END;
+ }
+ YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 315 "gabc/gabc-score-determination.l"
+{
+ BEGIN(style);
+ style_stack ++;
+ return SP_BEGINNING;
+ }
+ YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 320 "gabc/gabc-score-determination.l"
+{
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return SP_END;
+ }
+ YY_BREAK
+case 59:
+/* rule 59 can match eol */
+YY_RULE_SETUP
+#line 327 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+ YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 331 "gabc/gabc-score-determination.l"
+{
+ BEGIN(comments);
+ }
+ YY_BREAK
+case 61:
+/* rule 61 can match eol */
+YY_RULE_SETUP
+#line 334 "gabc/gabc-score-determination.l"
+{
+ BEGIN(score);
+ }
+ YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 337 "gabc/gabc-score-determination.l"
+{
+ /* ignored */
+ }
+ YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 340 "gabc/gabc-score-determination.l"
+{
+ BEGIN(verb);
+ return VERB_BEGINNING;
+ }
+ YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 344 "gabc/gabc-score-determination.l"
+{
+ if (style_stack == 0) {
+ BEGIN(score);
+ } else {
+ BEGIN(style);
+ }
+ return VERB_END;
+ }
+ YY_BREAK
+case 65:
+/* rule 65 can match eol */
+YY_RULE_SETUP
+#line 352 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+ YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 356 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+ YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 360 "gabc/gabc-score-determination.l"
+{
+ return CENTER_BEGINNING;
+ }
+ YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 363 "gabc/gabc-score-determination.l"
+{
+ return CENTER_END;
+ }
+ YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 366 "gabc/gabc-score-determination.l"
+{
+ BEGIN(alt);
+ return ALT_BEGIN;
+ }
+ YY_BREAK
+case 70:
+/* rule 70 can match eol */
+YY_RULE_SETUP
+#line 370 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+ YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 374 "gabc/gabc-score-determination.l"
+{
+ BEGIN(score);
+ return ALT_END;
+ }
+ YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 378 "gabc/gabc-score-determination.l"
+{
+ return EUOUAE_B;
+ }
+ YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 381 "gabc/gabc-score-determination.l"
+{
+ return EUOUAE_E;
+ }
+ YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 384 "gabc/gabc-score-determination.l"
+{
+ return TRANSLATION_CENTER_END;
+ }
+ YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 387 "gabc/gabc-score-determination.l"
+{
+ return TRANSLATION_BEGINNING;
+ }
+ YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 390 "gabc/gabc-score-determination.l"
+{
+ return TRANSLATION_END;
+ }
+ YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 393 "gabc/gabc-score-determination.l"
+{
+ BEGIN(notes);
+ return OPENING_BRACKET;
+ }
+ YY_BREAK
+case 78:
+/* rule 78 can match eol */
+YY_RULE_SETUP
+#line 397 "gabc/gabc-score-determination.l"
+{
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return NOTES;
+ }
+ YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 401 "gabc/gabc-score-determination.l"
+{
+ return VOICE_CUT;
+ }
+ YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 404 "gabc/gabc-score-determination.l"
+{
+ return NABC_CUT;
+ }
+ YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 407 "gabc/gabc-score-determination.l"
+{
+ BEGIN(score);
+ return CLOSING_BRACKET;
+ }
+ YY_BREAK
+case 82:
+/* rule 82 can match eol */
+YY_RULE_SETUP
+#line 411 "gabc/gabc-score-determination.l"
+{
+ BEGIN(score);
+ return CLOSING_BRACKET_WITH_SPACE;
+ }
+ YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 415 "gabc/gabc-score-determination.l"
+ECHO;
+ YY_BREAK
+#line 1792 "gabc/gabc-score-determination-l.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(attribute):
+case YY_STATE_EOF(score):
+case YY_STATE_EOF(notes):
+case YY_STATE_EOF(style):
+case YY_STATE_EOF(verb):
+case YY_STATE_EOF(comments):
+case YY_STATE_EOF(inicomments):
+case YY_STATE_EOF(alt):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed gabc_score_determination_in at a new source and called
+ * gabc_score_determination_lex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = gabc_score_determination_in;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_c_buf_p);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( gabc_score_determination_wrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * gabc_score_determination_text, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+ } /* end of user's declarations */
+} /* end of gabc_score_determination_lex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ yy_size_t num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ yy_size_t new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ gabc_score_determination_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ gabc_score_determination_restart(gabc_score_determination_in );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) gabc_score_determination_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+ yy_current_state += YY_AT_BOL();
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 430 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+ register char *yy_cp = (yy_c_buf_p);
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 430 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 429);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ gabc_score_determination_restart(gabc_score_determination_in );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( gabc_score_determination_wrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve gabc_score_determination_text */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void gabc_score_determination_restart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ gabc_score_determination_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ gabc_score_determination__create_buffer(gabc_score_determination_in,YY_BUF_SIZE );
+ }
+
+ gabc_score_determination__init_buffer(YY_CURRENT_BUFFER,input_file );
+ gabc_score_determination__load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void gabc_score_determination__switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * gabc_score_determination_pop_buffer_state();
+ * gabc_score_determination_push_buffer_state(new_buffer);
+ */
+ gabc_score_determination_ensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ gabc_score_determination__load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (gabc_score_determination_wrap()) processing, but the only time this flag
+ * is looked at is after gabc_score_determination_wrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void gabc_score_determination__load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ gabc_score_determination_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE gabc_score_determination__create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) gabc_score_determination_alloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_score_determination__create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) gabc_score_determination_alloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_score_determination__create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ gabc_score_determination__init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with gabc_score_determination__create_buffer()
+ *
+ */
+ void gabc_score_determination__delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ gabc_score_determination_free((void *) b->yy_ch_buf );
+
+ gabc_score_determination_free((void *) b );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a gabc_score_determination_restart() or at EOF.
+ */
+ static void gabc_score_determination__init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ gabc_score_determination__flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then gabc_score_determination__init_buffer was _probably_
+ * called from gabc_score_determination_restart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void gabc_score_determination__flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ gabc_score_determination__load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void gabc_score_determination_push_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ gabc_score_determination_ensure_buffer_stack();
+
+ /* This block is copied from gabc_score_determination__switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from gabc_score_determination__switch_to_buffer. */
+ gabc_score_determination__load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void gabc_score_determination_pop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ gabc_score_determination__delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ gabc_score_determination__load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void gabc_score_determination_ensure_buffer_stack (void)
+{
+ yy_size_t num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)gabc_score_determination_alloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_score_determination_ensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)gabc_score_determination_realloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_score_determination_ensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE gabc_score_determination__scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) gabc_score_determination_alloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_score_determination__scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ gabc_score_determination__switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to gabc_score_determination_lex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * gabc_score_determination__scan_bytes() instead.
+ */
+YY_BUFFER_STATE gabc_score_determination__scan_string (yyconst char * yystr )
+{
+
+ return gabc_score_determination__scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to gabc_score_determination_lex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE gabc_score_determination__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ yy_size_t i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) gabc_score_determination_alloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in gabc_score_determination__scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = gabc_score_determination__scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in gabc_score_determination__scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up gabc_score_determination_text. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ gabc_score_determination_text[gabc_score_determination_leng] = (yy_hold_char); \
+ (yy_c_buf_p) = gabc_score_determination_text + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ gabc_score_determination_leng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int gabc_score_determination_get_lineno (void)
+{
+
+ return gabc_score_determination_lineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *gabc_score_determination_get_in (void)
+{
+ return gabc_score_determination_in;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *gabc_score_determination_get_out (void)
+{
+ return gabc_score_determination_out;
+}
+
+/** Get the length of the current token.
+ *
+ */
+yy_size_t gabc_score_determination_get_leng (void)
+{
+ return gabc_score_determination_leng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *gabc_score_determination_get_text (void)
+{
+ return gabc_score_determination_text;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void gabc_score_determination_set_lineno (int line_number )
+{
+
+ gabc_score_determination_lineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see gabc_score_determination__switch_to_buffer
+ */
+void gabc_score_determination_set_in (FILE * in_str )
+{
+ gabc_score_determination_in = in_str ;
+}
+
+void gabc_score_determination_set_out (FILE * out_str )
+{
+ gabc_score_determination_out = out_str ;
+}
+
+int gabc_score_determination_get_debug (void)
+{
+ return gabc_score_determination__flex_debug;
+}
+
+void gabc_score_determination_set_debug (int bdebug )
+{
+ gabc_score_determination__flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from gabc_score_determination_lex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+ (yy_start_stack_ptr) = 0;
+ (yy_start_stack_depth) = 0;
+ (yy_start_stack) = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ gabc_score_determination_in = stdin;
+ gabc_score_determination_out = stdout;
+#else
+ gabc_score_determination_in = (FILE *) 0;
+ gabc_score_determination_out = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * gabc_score_determination_lex_init()
+ */
+ return 0;
+}
+
+/* gabc_score_determination_lex_destroy is for both reentrant and non-reentrant scanners. */
+int gabc_score_determination_lex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ gabc_score_determination__delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ gabc_score_determination_pop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ gabc_score_determination_free((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Destroy the start condition stack. */
+ gabc_score_determination_free((yy_start_stack) );
+ (yy_start_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * gabc_score_determination_lex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *gabc_score_determination_alloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *gabc_score_determination_realloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void gabc_score_determination_free (void * ptr )
+{
+ free( (char *) ptr ); /* see gabc_score_determination_realloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 415 "gabc/gabc-score-determination.l"
+
+
+
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.h
new file mode 100644
index 00000000000..adf6e4656d3
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-l.h
@@ -0,0 +1,330 @@
+#ifndef gabc_score_determination_HEADER_H
+#define gabc_score_determination_HEADER_H 1
+#define gabc_score_determination_IN_HEADER 1
+
+#line 6 "gabc/gabc-score-determination-l.h"
+
+#line 8 "gabc/gabc-score-determination-l.h"
+
+#define YY_INT_ALIGNED long int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 39
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t gabc_score_determination_leng;
+
+extern FILE *gabc_score_determination_in, *gabc_score_determination_out;
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ yy_size_t yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+void gabc_score_determination_restart (FILE *input_file );
+void gabc_score_determination__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE gabc_score_determination__create_buffer (FILE *file,int size );
+void gabc_score_determination__delete_buffer (YY_BUFFER_STATE b );
+void gabc_score_determination__flush_buffer (YY_BUFFER_STATE b );
+void gabc_score_determination_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void gabc_score_determination_pop_buffer_state (void );
+
+YY_BUFFER_STATE gabc_score_determination__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE gabc_score_determination__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE gabc_score_determination__scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *gabc_score_determination_alloc (yy_size_t );
+void *gabc_score_determination_realloc (void *,yy_size_t );
+void gabc_score_determination_free (void * );
+
+/* Begin user sect3 */
+
+#define gabc_score_determination_wrap() 1
+#define YY_SKIP_YYWRAP
+
+extern int gabc_score_determination_lineno;
+
+extern char *gabc_score_determination_text;
+#define yytext_ptr gabc_score_determination_text
+
+#ifdef YY_HEADER_EXPORT_START_CONDITIONS
+#define INITIAL 0
+#define attribute 1
+#define score 2
+#define notes 3
+#define style 4
+#define verb 5
+#define comments 6
+#define inicomments 7
+#define alt 8
+
+#endif
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int gabc_score_determination_lex_destroy (void );
+
+int gabc_score_determination_get_debug (void );
+
+void gabc_score_determination_set_debug (int debug_flag );
+
+YY_EXTRA_TYPE gabc_score_determination_get_extra (void );
+
+void gabc_score_determination_set_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *gabc_score_determination_get_in (void );
+
+void gabc_score_determination_set_in (FILE * in_str );
+
+FILE *gabc_score_determination_get_out (void );
+
+void gabc_score_determination_set_out (FILE * out_str );
+
+yy_size_t gabc_score_determination_get_leng (void );
+
+char *gabc_score_determination_get_text (void );
+
+int gabc_score_determination_get_lineno (void );
+
+void gabc_score_determination_set_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int gabc_score_determination_wrap (void );
+#else
+extern int gabc_score_determination_wrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int gabc_score_determination_lex (void);
+
+#define YY_DECL int gabc_score_determination_lex (void)
+#endif /* !YY_DECL */
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+#line 415 "gabc/gabc-score-determination.l"
+
+
+#line 329 "gabc/gabc-score-determination-l.h"
+#undef gabc_score_determination_IN_HEADER
+#endif /* gabc_score_determination_HEADER_H */
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.c
new file mode 100644
index 00000000000..fbe06ef6515
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.c
@@ -0,0 +1,3205 @@
+/* A Bison parser, made by GNU Bison 3.0.4. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015 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 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "3.0.4"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+
+/* Substitute the variable and function names. */
+#define yyparse gabc_score_determination_parse
+#define yylex gabc_score_determination_lex
+#define yyerror gabc_score_determination_error
+#define yydebug gabc_score_determination_debug
+#define yynerrs gabc_score_determination_nerrs
+
+#define yylval gabc_score_determination_lval
+#define yychar gabc_score_determination_char
+#define yylloc gabc_score_determination_lloc
+
+/* Copy the first part of user declarations. */
+#line 1 "gabc/gabc-score-determination.y" /* yacc.c:339 */
+
+/*
+ * Gregorio score determination in gabc input.
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+/*
+ *
+ * This file is certainly not the most easy to understand, it is a bison file.
+ * See the bison manual on gnu.org for further details.
+ *
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "bool.h"
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+#include "characters.h"
+#include "sha1.h"
+#include "plugins.h"
+#include "gabc.h"
+
+#define YYLLOC_DEFAULT(Current, Rhs, N) \
+ if (N) { \
+ (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).first_offset = YYRHSLOC (Rhs, 1).first_offset; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ (Current).last_offset = YYRHSLOC (Rhs, N).last_offset; \
+ } else { \
+ (Current).first_line = (Current).last_line = YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = YYRHSLOC (Rhs, 0).last_column; \
+ (Current).first_offset = (Current).last_offset = YYRHSLOC (Rhs, 0).last_offset; \
+ }
+
+#include "gabc-score-determination.h"
+#include "gabc-score-determination-l.h"
+
+/* uncomment it if you want to have an interactive shell to understand the
+ * details on how bison works for a certain input */
+/* int gabc_score_determination_debug=1; */
+
+/*
+ *
+ * We will need some variables and functions through the entire file, we
+ * declare them there:
+ *
+ */
+
+/* the score that we will determine and return */
+static gregorio_score *score;
+/* an array of elements that we will use for each syllable */
+static gregorio_element **elements;
+gregorio_element *current_element;
+/* a table containing the macros to use in gabc file */
+static char *macros[10];
+/* forward declaration of the flex/bison process function */
+static int gabc_score_determination_parse(void);
+/* other variables that we will have to use */
+static gregorio_character *current_character;
+static gregorio_character *first_text_character;
+static gregorio_character *first_translation_character;
+static gregorio_tr_centering translation_type;
+static gregorio_nlba no_linebreak_area;
+static gregorio_euouae euouae;
+static gregorio_voice_info *current_voice_info;
+static int number_of_voices;
+static int voice;
+/* see comments on text to understand this */
+static gregorio_center_determination center_is_determined;
+/* current_key is... the current key... updated by each notes determination
+ * (for key changes) */
+static int current_key = DEFAULT_KEY;
+static bool got_language = false;
+static struct sha1_ctx digester;
+
+static __inline void check_multiple(const char *name, bool exists) {
+ if (exists) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("several %s definitions found, only the last will be taken "
+ "into consideration"), name);
+ }
+}
+
+static void gabc_score_determination_error(const char *error_str)
+{
+ gregorio_message(error_str, (const char *) "gabc_score_determination_parse",
+ VERBOSITY_ERROR, 0);
+}
+
+static void gabc_fix_custos(gregorio_score *score_to_check)
+{
+ gregorio_syllable *current_syllable;
+ gregorio_element *current_element;
+ gregorio_element *custo_element;
+ char pitch = 0;
+ char pitch_difference = 0;
+ int newkey;
+ int current_key;
+ if (!score_to_check || !score_to_check->first_syllable
+ || !score_to_check->first_voice_info) {
+ return;
+ }
+ current_key = score_to_check->first_voice_info->initial_key;
+ current_syllable = score_to_check->first_syllable;
+ while (current_syllable) {
+ current_element = (current_syllable->elements)[0];
+ while (current_element) {
+ if (current_element->type == GRE_CUSTOS) {
+ custo_element = current_element;
+ pitch = custo_element->u.misc.pitched.pitch;
+ /* we look for the key */
+ while (current_element) {
+ switch (current_element->type) {
+ case GRE_C_KEY_CHANGE:
+ case GRE_C_KEY_CHANGE_FLATED:
+ pitch = gregorio_determine_next_pitch(current_syllable,
+ current_element, NULL);
+ newkey = gregorio_calculate_new_key(C_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ pitch_difference = (char) newkey - (char) current_key;
+ pitch -= pitch_difference;
+ current_key = newkey;
+ break;
+ case GRE_F_KEY_CHANGE:
+ case GRE_F_KEY_CHANGE_FLATED:
+ pitch = gregorio_determine_next_pitch(current_syllable,
+ current_element, NULL);
+ newkey = gregorio_calculate_new_key(F_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ pitch_difference = (char) newkey - (char) current_key;
+ pitch -= pitch_difference;
+ current_key = newkey;
+ break;
+ default:
+ break;
+ }
+ if (!custo_element->u.misc.pitched.force_pitch) {
+ while (pitch < LOWEST_PITCH) {
+ pitch += 7;
+ }
+ while (pitch > HIGHEST_PITCH) {
+ pitch -= 7;
+ }
+ custo_element->u.misc.pitched.pitch = pitch;
+ }
+ assert(custo_element->u.misc.pitched.pitch >= LOWEST_PITCH
+ && custo_element->u.misc.pitched.pitch
+ <= HIGHEST_PITCH);
+ current_element = current_element->next;
+ }
+ }
+ if (current_element) {
+ if (current_element->type == GRE_C_KEY_CHANGE
+ || current_element->type == GRE_C_KEY_CHANGE_FLATED) {
+ current_key = gregorio_calculate_new_key(C_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ }
+ if (current_element->type == GRE_F_KEY_CHANGE
+ || current_element->type == GRE_F_KEY_CHANGE_FLATED) {
+ current_key = gregorio_calculate_new_key(F_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ }
+ current_element = current_element->next;
+ }
+ }
+ current_syllable = current_syllable->next_syllable;
+ }
+}
+
+/*
+ * A function that checks to score integrity. For now it is... quite
+ * ridiculous... but it might be improved in the future.
+ */
+
+static int check_score_integrity(gregorio_score *score_to_check)
+{
+ if (!score_to_check) {
+ return 0;
+ }
+ return 1;
+}
+
+/*
+ * Another function to be improved: this one checks the validity of the voice_infos.
+ */
+
+static int check_infos_integrity(gregorio_score *score_to_check)
+{
+ if (!score_to_check->name) {
+ gregorio_message(_("no name specified, put `name:...;' at the "
+ "beginning of the file, can be dangerous with some output "
+ "formats"), "det_score", VERBOSITY_WARNING, 0);
+ }
+ return 1;
+}
+
+/*
+ * The function that will initialize the variables.
+ */
+
+static void initialize_variables(void)
+{
+ int i;
+ /* build a brand new empty score */
+ score = gregorio_new_score();
+ /* initialization of the first voice info to an empty voice info */
+ current_voice_info = NULL;
+ gregorio_add_voice_info(&current_voice_info);
+ score->first_voice_info = current_voice_info;
+ /* other initializations */
+ number_of_voices = 0;
+ voice = 1;
+ current_character = NULL;
+ first_translation_character = NULL;
+ first_text_character = NULL;
+ translation_type = TR_NORMAL;
+ no_linebreak_area = NLBA_NORMAL;
+ euouae = EUOUAE_NORMAL;
+ center_is_determined = 0;
+ for (i = 0; i < 10; i++) {
+ macros[i] = NULL;
+ }
+}
+
+/*
+ * function that frees the variables that need it, for when we have finished to
+ * determine the score
+ */
+
+static void free_variables(void)
+{
+ int i;
+ free(elements);
+ for (i = 0; i < 10; i++) {
+ free(macros[i]);
+ }
+}
+
+/* see whether a voice_info is empty */
+static int voice_info_is_not_empty(const gregorio_voice_info *voice_info)
+{
+ return (voice_info->initial_key != 5 || voice_info->style
+ || voice_info->virgula_position);
+}
+
+/*
+ * a function called when we see "--\n" that end the infos for a certain voice
+ */
+static void next_voice_info(void)
+{
+ /* we must do this test in the case where there would be a "--" before
+ * first_declarations */
+ if (voice_info_is_not_empty(current_voice_info)) {
+ gregorio_add_voice_info(&current_voice_info);
+ voice++;
+ }
+}
+
+/*
+ * Function that frees the voice_infos for voices > final_count. Useful if
+ * there are too many voice_infos
+ */
+
+static void reajust_voice_infos(gregorio_voice_info *voice_info,
+ int final_count)
+{
+ int i = 1;
+ while (voice_info && i <= final_count) {
+ voice_info = voice_info->next_voice_info;
+ }
+ gregorio_free_voice_infos(voice_info);
+}
+
+/*
+ * Function called when we have reached the end of the definitions, it tries to
+ * make the voice_infos coherent.
+ */
+static void end_definitions(void)
+{
+ int i;
+
+ if (!check_infos_integrity(score)) {
+ gregorio_message(_("can't determine valid infos on the score"),
+ "det_score", VERBOSITY_ERROR, 0);
+ }
+ if (!number_of_voices) {
+ if (voice > MAX_NUMBER_OF_VOICES) {
+ voice = MAX_NUMBER_OF_VOICES;
+ reajust_voice_infos(score->first_voice_info, number_of_voices);
+ }
+ number_of_voices = voice;
+ score->number_of_voices = voice;
+ } else {
+ if (number_of_voices > voice) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ ngt_("not enough voice infos found: %d found, %d waited, "
+ "%d assumed", "not enough voice infos found: %d found, %d "
+ "waited, %d assumed", voice), voice,
+ number_of_voices, voice);
+ score->number_of_voices = voice;
+ number_of_voices = voice;
+ } else {
+ if (number_of_voices < voice) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ ngt_("too many voice infos found: %d found, %d "
+ "waited, %d assumed", "not enough voice infos found: "
+ "%d found, %d waited, %d assumed",
+ number_of_voices), voice, number_of_voices,
+ number_of_voices);
+ }
+ }
+ }
+ /* voice is now voice-1, so that it can be the index of elements */
+ voice = 0;
+ elements = (gregorio_element **) malloc(number_of_voices *
+ sizeof(gregorio_element *));
+ for (i = 0; i < number_of_voices; i++) {
+ elements[i] = NULL;
+ }
+
+ if (!got_language) {
+ static char lang_Latin[] = "Latin";
+ gregorio_set_centering_language(lang_Latin);
+ }
+}
+
+/*
+ * Here starts the code for the determinations of the notes. The notes are not
+ * precisely determined here, we separate the text describing the notes of each
+ * voice, and we call determine_elements_from_string to really determine them.
+ */
+static char position = WORD_BEGINNING;
+static gregorio_syllable *current_syllable = NULL;
+static char *abovelinestext = NULL;
+
+/*
+ * Function called when we see a ")", it completes the gregorio_element array
+ * of the syllable with NULL pointers. Usefull in the cases where for example
+ * you have two voices, but a voice that is silent on a certain syllable.
+ */
+static void complete_with_nulls(int last_voice)
+{
+ int i;
+ for (i = last_voice + 1; i < number_of_voices; i++) {
+ elements[i] = NULL;
+ }
+}
+
+/*
+ * Function called each time we find a space, it updates the current position.
+ */
+static void update_position_with_space(void)
+{
+ if (position == WORD_MIDDLE) {
+ position = WORD_END;
+ }
+ if (position == WORD_BEGINNING) {
+ position = WORD_ONE_SYLLABLE;
+ }
+}
+
+/*
+ * When we encounter a translation center ending, we call this function that
+ * sets translation_type = TR_WITH_CENTER_BEGINNING on previous syllable with
+ * translation
+ */
+static void gregorio_set_translation_center_beginning(
+ gregorio_syllable *current_syllable)
+{
+ gregorio_syllable *syllable = current_syllable->previous_syllable;
+ while (syllable) {
+ if (syllable->translation_type == TR_WITH_CENTER_END) {
+ gregorio_message("encountering translation centering end but "
+ "cannot find translation centering beginning...",
+ "set_translation_center_beginning", VERBOSITY_ERROR, 0);
+ current_syllable->translation_type = TR_NORMAL;
+ return;
+ }
+ if (syllable->translation) {
+ syllable->translation_type = TR_WITH_CENTER_BEGINNING;
+ return;
+ }
+ syllable = syllable->previous_syllable;
+ }
+ /* we didn't find any beginning... */
+ gregorio_message("encountering translation centering end but cannot find "
+ "translation centering beginning...",
+ "set_translation_center_beginning", VERBOSITY_ERROR, 0);
+ current_syllable->translation_type = TR_NORMAL;
+}
+
+static void rebuild_characters(gregorio_character **param_character,
+ gregorio_center_determination center_is_determined)
+{
+ bool has_initial = score->initial_style != NO_INITIAL;
+ /* we rebuild the first syllable text if it is the first syllable, or if
+ * it is the second when the first has no text.
+ * it is a patch for cases like (c4) Al(ab)le(ab) */
+ if ((!score->first_syllable && has_initial && current_character)
+ || (current_syllable && !current_syllable->previous_syllable
+ && !current_syllable->text && current_character)) {
+ gregorio_rebuild_first_syllable(&current_character, has_initial);
+ }
+
+ gregorio_rebuild_characters(param_character, center_is_determined,
+ has_initial);
+}
+
+/*
+ * Function to close a syllable and update the position.
+ */
+
+static void close_syllable(YYLTYPE *loc)
+{
+ int i;
+ gregorio_add_syllable(&current_syllable, number_of_voices, elements,
+ first_text_character, first_translation_character, position,
+ abovelinestext, translation_type, no_linebreak_area, euouae, loc);
+ if (!score->first_syllable) {
+ /* we rebuild the first syllable if we have to */
+ score->first_syllable = current_syllable;
+ }
+ if (translation_type == TR_WITH_CENTER_END) {
+ gregorio_set_translation_center_beginning(current_syllable);
+ }
+ /* we update the position */
+ if (position == WORD_BEGINNING) {
+ position = WORD_MIDDLE;
+ }
+ if (position == WORD_ONE_SYLLABLE || position == WORD_END) {
+ position = WORD_BEGINNING;
+ }
+ center_is_determined = CENTER_NOT_DETERMINED;
+ current_character = NULL;
+ first_text_character = NULL;
+ first_translation_character = NULL;
+ translation_type = TR_NORMAL;
+ no_linebreak_area = NLBA_NORMAL;
+ euouae = EUOUAE_NORMAL;
+ abovelinestext = NULL;
+ for (i = 0; i < number_of_voices; i++) {
+ elements[i] = NULL;
+ }
+ current_element = NULL;
+}
+
+/* a function called when we see a [, basically, all characters are added to
+ * the translation pointer instead of the text pointer */
+static void start_translation(unsigned char asked_translation_type)
+{
+ rebuild_characters(&current_character, center_is_determined);
+ first_text_character = current_character;
+ /* the middle letters of the translation have no sense */
+ center_is_determined = CENTER_FULLY_DETERMINED;
+ current_character = NULL;
+ translation_type = asked_translation_type;
+}
+
+static void end_translation(void)
+{
+ rebuild_characters(&current_character, center_is_determined);
+ first_translation_character = current_character;
+}
+
+/*
+ * gregorio_gabc_add_text is the function called when lex returns a char *. In
+ * this function we convert it into grewchar, and then we add the corresponding
+ * gregorio_characters in the list of gregorio_characters.
+ */
+
+static void gregorio_gabc_add_text(char *mbcharacters)
+{
+ if (current_character) {
+ current_character->next_character = gregorio_build_char_list_from_buf(
+ mbcharacters);
+ current_character->next_character->previous_character =
+ current_character;
+ } else {
+ current_character = gregorio_build_char_list_from_buf(mbcharacters);
+ }
+ while (current_character && current_character->next_character) {
+ current_character = current_character->next_character;
+ }
+ free(mbcharacters);
+}
+
+/*
+ * the function called when centering_scheme is seen in gabc
+ */
+static void set_centering_scheme(char *sc)
+{
+ gregorio_message("\"centering-scheme\" header is deprecated. Please use "
+ "\\setlyriccentering in TeX instead.", "set_centering_scheme",
+ VERBOSITY_DEPRECATION, 0);
+ if (strncmp((const char *) sc, "latine", 6) == 0) {
+ score->centering = SCHEME_VOWEL;
+ return;
+ }
+ if (strncmp((const char *) sc, "english", 6) == 0) {
+ score->centering = SCHEME_SYLLABLE;
+ return;
+ }
+ gregorio_message("centering-scheme unknown value: must be \"latine\" "
+ "or \"english\"", "set_centering_scheme", VERBOSITY_WARNING, 0);
+}
+
+/*
+ *
+ * The two functions called when lex returns a style, we simply add it. All the
+ * complex things will be done by the function after...
+ *
+ */
+
+static void gregorio_gabc_add_style(unsigned char style)
+{
+ gregorio_begin_style(&current_character, style);
+}
+
+static void gregorio_gabc_end_style(unsigned char style)
+{
+ gregorio_end_style(&current_character, style);
+}
+
+void gabc_digest(const void *const buf, const size_t size)
+{
+ sha1_process_bytes(buf, size, &digester);
+}
+
+/*
+ * The "main" function. It is the function that is called when we have to read
+ * a gabc file. It takes a file descriptor, that is to say a file that is
+ * aleady open. It returns a valid gregorio_score
+ */
+
+gregorio_score *gabc_read_score(FILE *f_in)
+{
+ /* compute the SHA-1 digest while parsing, for I/O efficiency */
+ sha1_init_ctx(&digester);
+ /* digest GREGORIO_VERSION to get a different value when the version
+ changes */
+ sha1_process_bytes(GREGORIO_VERSION, strlen(GREGORIO_VERSION), &digester);
+ /* the input file that flex will parse */
+ gabc_score_determination_in = f_in;
+ if (!f_in) {
+ gregorio_message(_("can't read stream from argument, returning NULL "
+ "pointer"), "det_score", VERBOSITY_ERROR, 0);
+ return NULL;
+ }
+ initialize_variables();
+ /* the flex/bison main call, it will build the score (that we have
+ * initialized) */
+ gabc_score_determination_parse();
+ gregorio_fix_initial_keys(score, DEFAULT_KEY);
+ gabc_fix_custos(score);
+ free_variables();
+ /* the we check the validity and integrity of the score we have built. */
+ if (!check_score_integrity(score)) {
+ gregorio_free_score(score);
+ score = NULL;
+ gregorio_message(_("unable to determine a valid score from file"),
+ "det_score", VERBOSITY_FATAL, 0);
+ }
+ sha1_finish_ctx(&digester, score->digest);
+ return score;
+}
+
+unsigned char nabc_state = 0;
+size_t nabc_lines = 0;
+
+static void gabc_y_add_notes(char *notes, YYLTYPE loc) {
+ gregorio_element *new_elements;
+ gregorio_element *last_element;
+ if (nabc_state == 0) {
+ if (!elements[voice]) {
+ elements[voice] = gabc_det_elements_from_string(notes,
+ &current_key, macros, &loc);
+ current_element = elements[voice];
+ } else {
+ new_elements = gabc_det_elements_from_string(notes,
+ &current_key, macros, &loc);
+ last_element = elements[voice];
+ while(last_element->next) {
+ last_element = last_element->next;
+ }
+ last_element->next = new_elements;
+ new_elements->previous = last_element;
+ current_element = new_elements;
+ }
+ } else {
+ if (!elements[voice]) {
+ gregorio_add_element(&elements[voice], NULL);
+ current_element = elements[voice];
+ }
+ if (!current_element) {
+ gregorio_message(_("current_element is null, this shouldn't "
+ "happen!"), "gabc_y_add_notes", VERBOSITY_FATAL, 0);
+ }
+ if (!current_element->nabc) {
+ current_element->nabc = (char **) calloc (nabc_lines,
+ sizeof (char *));
+ }
+ current_element->nabc[nabc_state-1] = strdup(notes);
+ current_element->nabc_lines = nabc_state;
+ }
+}
+
+#line 702 "gabc/gabc-score-determination-y.c" /* yacc.c:339 */
+
+# ifndef YY_NULLPTR
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* In a future release of Bison, this section will be replaced
+ by #include "gabc-score-determination-y.h". */
+#ifndef YY_GABC_SCORE_DETERMINATION_GABC_GABC_SCORE_DETERMINATION_Y_H_INCLUDED
+# define YY_GABC_SCORE_DETERMINATION_GABC_GABC_SCORE_DETERMINATION_Y_H_INCLUDED
+/* Debug traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int gabc_score_determination_debug;
+#endif
+
+/* Token type. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ enum yytokentype
+ {
+ ATTRIBUTE = 258,
+ COLON = 259,
+ SEMICOLON = 260,
+ OFFICE_PART = 261,
+ ANNOTATION = 262,
+ AUTHOR = 263,
+ DATE = 264,
+ MANUSCRIPT = 265,
+ MANUSCRIPT_REFERENCE = 266,
+ MANUSCRIPT_STORAGE_PLACE = 267,
+ TRANSCRIBER = 268,
+ TRANSCRIPTION_DATE = 269,
+ BOOK = 270,
+ STYLE = 271,
+ VIRGULA_POSITION = 272,
+ INITIAL_STYLE = 273,
+ MODE = 274,
+ GREGORIOTEX_FONT = 275,
+ GENERATED_BY = 276,
+ NAME = 277,
+ OPENING_BRACKET = 278,
+ NOTES = 279,
+ VOICE_CUT = 280,
+ CLOSING_BRACKET = 281,
+ NUMBER_OF_VOICES = 282,
+ VOICE_CHANGE = 283,
+ END_OF_DEFINITIONS = 284,
+ SPACE = 285,
+ CHARACTERS = 286,
+ I_BEGINNING = 287,
+ I_END = 288,
+ TT_BEGINNING = 289,
+ TT_END = 290,
+ UL_BEGINNING = 291,
+ UL_END = 292,
+ C_BEGINNING = 293,
+ C_END = 294,
+ B_BEGINNING = 295,
+ B_END = 296,
+ SC_BEGINNING = 297,
+ SC_END = 298,
+ SP_BEGINNING = 299,
+ SP_END = 300,
+ VERB_BEGINNING = 301,
+ VERB = 302,
+ VERB_END = 303,
+ CENTER_BEGINNING = 304,
+ CENTER_END = 305,
+ CLOSING_BRACKET_WITH_SPACE = 306,
+ TRANSLATION_BEGINNING = 307,
+ TRANSLATION_END = 308,
+ GABC_COPYRIGHT = 309,
+ SCORE_COPYRIGHT = 310,
+ OCCASION = 311,
+ METER = 312,
+ COMMENTARY = 313,
+ ARRANGER = 314,
+ GABC_VERSION = 315,
+ USER_NOTES = 316,
+ DEF_MACRO = 317,
+ ALT_BEGIN = 318,
+ ALT_END = 319,
+ CENTERING_SCHEME = 320,
+ TRANSLATION_CENTER_END = 321,
+ BNLBA = 322,
+ ENLBA = 323,
+ EUOUAE_B = 324,
+ EUOUAE_E = 325,
+ NABC_CUT = 326,
+ NABC_LINES = 327,
+ LANGUAGE = 328
+ };
+#endif
+/* Tokens. */
+#define ATTRIBUTE 258
+#define COLON 259
+#define SEMICOLON 260
+#define OFFICE_PART 261
+#define ANNOTATION 262
+#define AUTHOR 263
+#define DATE 264
+#define MANUSCRIPT 265
+#define MANUSCRIPT_REFERENCE 266
+#define MANUSCRIPT_STORAGE_PLACE 267
+#define TRANSCRIBER 268
+#define TRANSCRIPTION_DATE 269
+#define BOOK 270
+#define STYLE 271
+#define VIRGULA_POSITION 272
+#define INITIAL_STYLE 273
+#define MODE 274
+#define GREGORIOTEX_FONT 275
+#define GENERATED_BY 276
+#define NAME 277
+#define OPENING_BRACKET 278
+#define NOTES 279
+#define VOICE_CUT 280
+#define CLOSING_BRACKET 281
+#define NUMBER_OF_VOICES 282
+#define VOICE_CHANGE 283
+#define END_OF_DEFINITIONS 284
+#define SPACE 285
+#define CHARACTERS 286
+#define I_BEGINNING 287
+#define I_END 288
+#define TT_BEGINNING 289
+#define TT_END 290
+#define UL_BEGINNING 291
+#define UL_END 292
+#define C_BEGINNING 293
+#define C_END 294
+#define B_BEGINNING 295
+#define B_END 296
+#define SC_BEGINNING 297
+#define SC_END 298
+#define SP_BEGINNING 299
+#define SP_END 300
+#define VERB_BEGINNING 301
+#define VERB 302
+#define VERB_END 303
+#define CENTER_BEGINNING 304
+#define CENTER_END 305
+#define CLOSING_BRACKET_WITH_SPACE 306
+#define TRANSLATION_BEGINNING 307
+#define TRANSLATION_END 308
+#define GABC_COPYRIGHT 309
+#define SCORE_COPYRIGHT 310
+#define OCCASION 311
+#define METER 312
+#define COMMENTARY 313
+#define ARRANGER 314
+#define GABC_VERSION 315
+#define USER_NOTES 316
+#define DEF_MACRO 317
+#define ALT_BEGIN 318
+#define ALT_END 319
+#define CENTERING_SCHEME 320
+#define TRANSLATION_CENTER_END 321
+#define BNLBA 322
+#define ENLBA 323
+#define EUOUAE_B 324
+#define EUOUAE_E 325
+#define NABC_CUT 326
+#define NABC_LINES 327
+#define LANGUAGE 328
+
+/* Value type. */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+/* Location type. */
+#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
+typedef struct YYLTYPE YYLTYPE;
+struct YYLTYPE
+{
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+};
+# define YYLTYPE_IS_DECLARED 1
+# define YYLTYPE_IS_TRIVIAL 1
+#endif
+
+
+extern YYSTYPE gabc_score_determination_lval;
+extern YYLTYPE gabc_score_determination_lloc;
+int gabc_score_determination_parse (void);
+
+#endif /* !YY_GABC_SCORE_DETERMINATION_GABC_GABC_SCORE_DETERMINATION_Y_H_INCLUDED */
+
+/* Copy the second part of user declarations. */
+
+#line 913 "gabc/gabc-score-determination-y.c" /* yacc.c:358 */
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#else
+typedef signed char yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(Msgid) Msgid
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__ \
+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+# define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(E) ((void) (E))
+#else
+# define YYUSE(E) /* empty */
+#endif
+
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define YY_INITIAL_VALUE(Value) Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined EXIT_SUCCESS
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined EXIT_SUCCESS
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
+ && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+ YYLTYPE yyls_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
+ + 2 * YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+# else
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 4
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 194
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 74
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 51
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 118
+/* YYNSTATES -- Number of states. */
+#define YYNSTATES 162
+
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 328
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, without out-of-bounds checking. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73
+};
+
+#if YYDEBUG
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 654, 654, 658, 663, 664, 668, 680, 686, 697,
+ 703, 712, 719, 726, 736, 743, 750, 757, 764, 771,
+ 784, 794, 805, 814, 825, 832, 839, 846, 854, 862,
+ 869, 877, 885, 896, 909, 915, 921, 925, 931, 932,
+ 933, 934, 935, 936, 937, 938, 939, 940, 941, 942,
+ 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,
+ 953, 954, 955, 956, 957, 958, 959, 960, 961, 966,
+ 967, 971, 993, 1016, 1029, 1042, 1047, 1056, 1059, 1062,
+ 1065, 1068, 1071, 1074, 1077, 1080, 1089, 1092, 1095, 1098,
+ 1101, 1104, 1107, 1110, 1113, 1122, 1125, 1131, 1134, 1140,
+ 1141, 1144, 1145, 1146, 1147, 1150, 1151, 1155, 1161, 1164,
+ 1170, 1176, 1181, 1187, 1190, 1196, 1197, 1200, 1201
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || 0
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "ATTRIBUTE", "COLON", "SEMICOLON",
+ "OFFICE_PART", "ANNOTATION", "AUTHOR", "DATE", "MANUSCRIPT",
+ "MANUSCRIPT_REFERENCE", "MANUSCRIPT_STORAGE_PLACE", "TRANSCRIBER",
+ "TRANSCRIPTION_DATE", "BOOK", "STYLE", "VIRGULA_POSITION",
+ "INITIAL_STYLE", "MODE", "GREGORIOTEX_FONT", "GENERATED_BY", "NAME",
+ "OPENING_BRACKET", "NOTES", "VOICE_CUT", "CLOSING_BRACKET",
+ "NUMBER_OF_VOICES", "VOICE_CHANGE", "END_OF_DEFINITIONS", "SPACE",
+ "CHARACTERS", "I_BEGINNING", "I_END", "TT_BEGINNING", "TT_END",
+ "UL_BEGINNING", "UL_END", "C_BEGINNING", "C_END", "B_BEGINNING", "B_END",
+ "SC_BEGINNING", "SC_END", "SP_BEGINNING", "SP_END", "VERB_BEGINNING",
+ "VERB", "VERB_END", "CENTER_BEGINNING", "CENTER_END",
+ "CLOSING_BRACKET_WITH_SPACE", "TRANSLATION_BEGINNING", "TRANSLATION_END",
+ "GABC_COPYRIGHT", "SCORE_COPYRIGHT", "OCCASION", "METER", "COMMENTARY",
+ "ARRANGER", "GABC_VERSION", "USER_NOTES", "DEF_MACRO", "ALT_BEGIN",
+ "ALT_END", "CENTERING_SCHEME", "TRANSLATION_CENTER_END", "BNLBA",
+ "ENLBA", "EUOUAE_B", "EUOUAE_E", "NABC_CUT", "NABC_LINES", "LANGUAGE",
+ "$accept", "score", "all_definitions", "definitions",
+ "number_of_voices_definition", "macro_definition", "name_definition",
+ "centering_scheme_definition", "language_definition",
+ "gabc_copyright_definition", "score_copyright_definition",
+ "gregoriotex_font_definition", "office_part_definition",
+ "occasion_definition", "meter_definition", "commentary_definition",
+ "arranger_definition", "gabc_version_definition", "mode_definition",
+ "nabc_lines_definition", "initial_style_definition",
+ "annotation_definition", "author_definition", "date_definition",
+ "manuscript_definition", "manuscript_reference_definition",
+ "manuscript_storage_place_definition", "book_definition",
+ "transcriber_definition", "transcription_date_definition",
+ "style_definition", "virgula_position_definition",
+ "generated_by_definition", "user_notes_definition", "attribute",
+ "definition", "notes", "note", "style_beginning", "style_end", "euouae",
+ "linebreak_area", "character", "text", "translation_beginning",
+ "translation", "above_line_text", "syllable_with_notes",
+ "notes_without_word", "syllable", "syllables", YY_NULLPTR
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+ (internal) symbol number NUM (which must be that of a token). */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328
+};
+# endif
+
+#define YYPACT_NINF -83
+
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-83)))
+
+#define YYTABLE_NINF -3
+
+#define yytable_value_is_error(Yytable_value) \
+ 0
+
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+static const yytype_int8 yypact[] =
+{
+ -83, 20, -83, -6, -83, 17, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, -83, -83, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, 53, -83, 2, -83, -83, -83, 21, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, 6,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -2, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ 8, -83, 93, -83, 28, -83, -7, -83, -83, -83,
+ 6, -30, -83, -83, 6, -83, -83, -83, -83, -83,
+ -83, 6
+};
+
+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 4, 0, 117, 0, 1, 105, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 68, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 38, 40,
+ 39, 66, 67, 41, 42, 64, 56, 57, 58, 59,
+ 60, 61, 63, 52, 62, 55, 54, 53, 50, 49,
+ 48, 51, 47, 46, 45, 44, 43, 65, 5, 69,
+ 107, 109, 0, 105, 0, 115, 116, 118, 0, 14,
+ 23, 24, 25, 26, 27, 28, 30, 31, 29, 32,
+ 33, 22, 20, 13, 34, 8, 6, 11, 12, 15,
+ 16, 17, 18, 19, 35, 7, 9, 21, 10, 113,
+ 69, 100, 77, 86, 78, 87, 79, 88, 80, 89,
+ 81, 90, 82, 91, 84, 93, 83, 92, 85, 94,
+ 0, 97, 98, 95, 96, 101, 102, 104, 103, 106,
+ 0, 99, 0, 69, 0, 37, 0, 75, 76, 70,
+ 111, 0, 69, 108, 114, 36, 73, 71, 72, 74,
+ 110, 112
+};
+
+ /* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, 157, -83, -82, -83, -83, -83,
+ -83, -83, -83, -38, -83, -36, -83, -83, -83, -83,
+ -83
+};
+
+ /* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 2, 3, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 79, 68, 109, 149, 135, 136,
+ 137, 138, 139, 72, 73, 74, 141, 75, 76, 77,
+ 5
+};
+
+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+static const yytype_int16 yytable[] =
+{
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, -2, 156, 157,
+ 4, 23, 24, 25, 144, 143, 145, 78, 150, 151,
+ 146, 152, 147, 155, 160, 142, 140, 0, 0, 0,
+ 69, 0, 0, 0, 158, 0, 0, 0, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 148, 0, 35,
+ 0, 154, 0, 0, 159, 0, 36, 37, 0, 70,
+ 161, 0, 0, 0, 0, 0, 110, 0, 0, 0,
+ 0, 0, 0, 71, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 0, 127, 128, 129, 0, 70, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 130, 0, 0, 71,
+ 131, 132, 133, 134, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 0, 127, 128, 129, 0, 0, 153, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 130, 0, 0, 0,
+ 131, 132, 133, 134, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 0, 0, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 0, 25, 26,
+ 0, 27, 28, 29, 3, 23, 5, 4, 110, 31,
+ 24, 23, 26, 5, 64, 73, 72, -1, -1, -1,
+ 23, -1, -1, -1, 51, -1, -1, -1, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 51, -1, 65,
+ -1, 143, -1, -1, 71, -1, 72, 73, -1, 52,
+ 152, -1, -1, -1, -1, -1, 23, -1, -1, -1,
+ -1, -1, -1, 66, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ -1, 48, 49, 50, -1, 52, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 63, -1, -1, 66,
+ 67, 68, 69, 70, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ -1, 48, 49, 50, -1, -1, 53, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 63, -1, -1, -1,
+ 67, 68, 69, 70, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, -1, -1, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37
+};
+
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 75, 76, 77, 0, 124, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 27, 28, 29, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 65, 72, 73, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 109, 23,
+ 52, 66, 117, 118, 119, 121, 122, 123, 4, 108,
+ 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
+ 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
+ 108, 108, 108, 108, 108, 108, 108, 108, 108, 110,
+ 23, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 48, 49, 50,
+ 63, 67, 68, 69, 70, 112, 113, 114, 115, 116,
+ 119, 120, 117, 23, 3, 5, 24, 26, 51, 111,
+ 110, 31, 23, 53, 110, 5, 25, 26, 51, 71,
+ 64, 110
+};
+
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 74, 75, 76, 77, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 108, 109, 109,
+ 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
+ 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
+ 109, 109, 109, 109, 109, 109, 109, 109, 109, 110,
+ 110, 111, 111, 111, 111, 111, 111, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 113, 113, 113, 113,
+ 113, 113, 113, 113, 113, 114, 114, 115, 115, 116,
+ 116, 116, 116, 116, 116, 117, 117, 118, 119, 119,
+ 120, 121, 121, 122, 122, 123, 123, 124, 124
+};
+
+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 2, 2, 0, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 3, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 2, 1, 3, 1,
+ 3, 3, 4, 2, 3, 1, 1, 0, 2
+};
+
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (0)
+
+/* Error token number */
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (N) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (0)
+#endif
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+
+/* Print *YYLOCP on YYO. Private, do not rely on its existence. */
+
+YY_ATTRIBUTE_UNUSED
+static unsigned
+yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
+{
+ unsigned res = 0;
+ int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
+ if (0 <= yylocp->first_line)
+ {
+ res += YYFPRINTF (yyo, "%d", yylocp->first_line);
+ if (0 <= yylocp->first_column)
+ res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
+ }
+ if (0 <= yylocp->last_line)
+ {
+ if (yylocp->first_line < yylocp->last_line)
+ {
+ res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
+ if (0 <= end_col)
+ res += YYFPRINTF (yyo, ".%d", end_col);
+ }
+ else if (0 <= end_col && yylocp->first_column < end_col)
+ res += YYFPRINTF (yyo, "-%d", end_col);
+ }
+ return res;
+ }
+
+# define YY_LOCATION_PRINT(File, Loc) \
+ yy_location_print_ (File, &(Loc))
+
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value, Location); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT. |
+`----------------------------------------*/
+
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
+{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
+ YYUSE (yylocationp);
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ YYUSE (yytype);
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
+{
+ YYFPRINTF (yyoutput, "%s %s (",
+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+
+ YY_LOCATION_PRINT (yyoutput, *yylocationp);
+ YYFPRINTF (yyoutput, ": ");
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+static void
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
+{
+ unsigned long int yylno = yyrline[yyrule];
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , &(yylsp[(yyi + 1) - (yynrhs)]) );
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+yystrlen (const char *yystr)
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULLPTR;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ {
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+ }
+
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
+
+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
+{
+ YYUSE (yyvaluep);
+ YYUSE (yylocationp);
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+}
+
+
+
+
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+/* Location data for the lookahead symbol. */
+YYLTYPE yylloc
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+ = { 1, 1, 1, 1 }
+# endif
+;
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+int
+yyparse (void)
+{
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ 'yyss': related to states.
+ 'yyvs': related to semantic values.
+ 'yyls': related to locations.
+
+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ /* The location stack. */
+ YYLTYPE yylsa[YYINITDEPTH];
+ YYLTYPE *yyls;
+ YYLTYPE *yylsp;
+
+ /* The locations where the error started and ended. */
+ YYLTYPE yyerror_range[3];
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+ YYLTYPE yyloc;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yyssp = yyss = yyssa;
+ yyvsp = yyvs = yyvsa;
+ yylsp = yyls = yylsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+/* User initialization code. */
+#line 628 "gabc/gabc-score-determination.y" /* yacc.c:1429 */
+{
+ yylloc.first_line = 1;
+ yylloc.first_column = 0;
+ yylloc.first_offset = 0;
+ yylloc.last_line = 1;
+ yylloc.last_column = 0;
+ yylloc.last_offset = 0;
+}
+
+#line 2072 "gabc/gabc-score-determination-y.c" /* yacc.c:1429 */
+ yylsp[0] = yylloc;
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+ YYLTYPE *yyls1 = yyls;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yyls1, yysize * sizeof (*yylsp),
+ &yystacksize);
+
+ yyls = yyls1;
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ YYSTACK_RELOCATE (yyls_alloc, yyls);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+ yylsp = yyls + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = yylex ();
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+ *++yylsp = yylloc;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ '$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+ /* Default location. */
+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 3:
+#line 658 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ end_definitions();
+ }
+#line 2263 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 6:
+#line 668 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ number_of_voices=atoi((yyvsp[0]).text);
+ if (number_of_voices > MAX_NUMBER_OF_VOICES) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("can't define %d voices, maximum is %d"),
+ number_of_voices, MAX_NUMBER_OF_VOICES);
+ }
+ gregorio_set_score_number_of_voices (score, number_of_voices);
+ }
+#line 2277 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 7:
+#line 680 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ macros[(yyvsp[-1]).character - '0'] = (yyvsp[0]).text;
+ }
+#line 2285 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 8:
+#line 686 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if ((yyvsp[0]).text==NULL) {
+ gregorio_message("name can't be empty","det_score",
+ VERBOSITY_WARNING, 0);
+ }
+ check_multiple("name", score->name != NULL);
+ gregorio_set_score_name (score, (yyvsp[0]).text);
+ }
+#line 2298 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 9:
+#line 697 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ set_centering_scheme((yyvsp[0]).text);
+ }
+#line 2306 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 10:
+#line 703 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("language", got_language);
+ gregorio_set_centering_language((yyvsp[0]).text);
+ free((yyvsp[0]).text);
+ got_language = true;
+ }
+#line 2317 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 11:
+#line 712 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("gabc-copyright", score->gabc_copyright != NULL);
+ gregorio_set_score_gabc_copyright (score, (yyvsp[0]).text);
+ }
+#line 2326 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 12:
+#line 719 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("score_copyright", score->score_copyright != NULL);
+ gregorio_set_score_score_copyright (score, (yyvsp[0]).text);
+ }
+#line 2335 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 13:
+#line 726 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_message("\"gregoriotex-font\" header is deprecated. "
+ "Please use \\gresetgregoriofont in TeX instead.",
+ "set_gregoriotex_font", VERBOSITY_DEPRECATION, 0);
+ check_multiple("GregorioTeX font", score->gregoriotex_font != NULL);
+ score->gregoriotex_font=(yyvsp[0]).text;
+ }
+#line 2347 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 14:
+#line 736 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("office part", score->office_part != NULL);
+ gregorio_set_score_office_part (score, (yyvsp[0]).text);
+ }
+#line 2356 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 15:
+#line 743 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("occasion", score->occasion != NULL);
+ gregorio_set_score_occasion (score, (yyvsp[0]).text);
+ }
+#line 2365 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 16:
+#line 750 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("meter", score->meter != NULL);
+ gregorio_set_score_meter (score, (yyvsp[0]).text);
+ }
+#line 2374 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 17:
+#line 757 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("commentary", score->commentary != NULL);
+ gregorio_set_score_commentary (score, (yyvsp[0]).text);
+ }
+#line 2383 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 18:
+#line 764 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("arranger", score->arranger != NULL);
+ gregorio_set_score_arranger (score, (yyvsp[0]).text);
+ }
+#line 2392 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 19:
+#line 771 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ /* So far this handling of the version is rudimentary. When
+ * we start supporting multiple input versions, it will become
+ * more complex. For the moment, just issue a warning. */
+ if (strcmp ((yyvsp[0]).text, GABC_CURRENT_VERSION) != 0) {
+ gregorio_message(_("gabc-version is not the current one "
+ GABC_CURRENT_VERSION " ; there may be problems"),
+ "det_score", VERBOSITY_WARNING, 0);
+ }
+ }
+#line 2407 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 20:
+#line 784 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("mode", score->mode != 0);
+ if ((yyvsp[0]).text) {
+ score->mode=atoi((yyvsp[0]).text);
+ free((yyvsp[0]).text);
+ }
+ }
+#line 2419 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 21:
+#line 794 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("nabc lines", score->nabc_lines != 0);
+ if ((yyvsp[0]).text) {
+ nabc_lines=atoi((yyvsp[0]).text);
+ score->nabc_lines=nabc_lines;
+ free((yyvsp[0]).text);
+ }
+ }
+#line 2432 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 22:
+#line 805 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if ((yyvsp[0]).text) {
+ score->initial_style=atoi((yyvsp[0]).text);
+ free((yyvsp[0]).text);
+ }
+ }
+#line 2443 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 23:
+#line 814 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (score->annotation [MAX_ANNOTATIONS - 1]) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("too many definitions of annotation found, only the "
+ "first %d will be taken"), MAX_ANNOTATIONS);
+ }
+ gregorio_set_score_annotation (score, (yyvsp[0]).text);
+ }
+#line 2456 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 24:
+#line 825 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("author", score->si.author != NULL);
+ gregorio_set_score_author (score, (yyvsp[0]).text);
+ }
+#line 2465 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 25:
+#line 832 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("date", score->si.date != NULL);
+ gregorio_set_score_date (score, (yyvsp[0]).text);
+ }
+#line 2474 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 26:
+#line 839 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("manuscript", score->si.manuscript != NULL);
+ gregorio_set_score_manuscript (score, (yyvsp[0]).text);
+ }
+#line 2483 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 27:
+#line 846 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("manuscript-reference",
+ score->si.manuscript_reference != NULL);
+ gregorio_set_score_manuscript_reference (score, (yyvsp[0]).text);
+ }
+#line 2493 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 28:
+#line 854 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("manuscript-storage-place",
+ score->si.manuscript_storage_place != NULL);
+ gregorio_set_score_manuscript_storage_place (score, (yyvsp[0]).text);
+ }
+#line 2503 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 29:
+#line 862 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("book", score->si.book != NULL);
+ gregorio_set_score_book (score, (yyvsp[0]).text);
+ }
+#line 2512 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 30:
+#line 869 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("transcriber", score->si.transcriber != NULL);
+ gregorio_set_score_transcriber (score, (yyvsp[0]).text);
+ /* free($2.text); */
+ }
+#line 2522 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 31:
+#line 877 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ check_multiple("transcription date",
+ score->si.transcription_date != NULL);
+ gregorio_set_score_transcription_date (score, (yyvsp[0]).text);
+ }
+#line 2532 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 32:
+#line 885 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (current_voice_info->style) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("several definitions of style found for voice %d, only "
+ "the last will be taken into consideration"), voice);
+ }
+ gregorio_set_voice_style (current_voice_info, (yyvsp[0]).text);
+ }
+#line 2545 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 33:
+#line 896 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (current_voice_info->virgula_position) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("several definitions of virgula position found for "
+ "voice %d, only the last will be taken into consideration"),
+ voice);
+ }
+ gregorio_set_voice_virgula_position (current_voice_info, (yyvsp[0]).text);
+ }
+#line 2559 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 34:
+#line 909 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ /* set_voice_generated_by (current_voice_info, $2.text); */
+ }
+#line 2567 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 35:
+#line 915 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_set_score_user_notes (score, (yyvsp[0]).text);
+ }
+#line 2575 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 36:
+#line 921 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ (yyval).text = (yyvsp[-1]).text;
+ }
+#line 2583 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 37:
+#line 925 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ (yyval).text = NULL;
+ }
+#line 2591 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 68:
+#line 961 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ next_voice_info();
+ }
+#line 2599 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 71:
+#line 971 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (voice<number_of_voices) {
+ gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1]));
+ free((yyvsp[-1]).text);
+ }
+ else {
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ ngt_("too many voices in note : %d found, %d expected",
+ "too many voices in note : %d found, %d expected",
+ number_of_voices), voice+1, number_of_voices);
+ }
+ if (voice<number_of_voices-1) {
+ gregorio_messagef("det_score", VERBOSITY_INFO, 0,
+ ngt_("not enough voices in note : %d found, %d expected, "
+ "completing with empty neume", "not enough voices in note "
+ ": %d found, %d expected, completing with empty neume",
+ voice+1), voice+1, number_of_voices);
+ complete_with_nulls(voice);
+ }
+ voice=0;
+ nabc_state=0;
+ }
+#line 2626 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 72:
+#line 993 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (voice<number_of_voices) {
+ gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1]));
+ free((yyvsp[-1]).text);
+ }
+ else {
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ ngt_("too many voices in note : %d found, %d expected",
+ "too many voices in note : %d found, %d expected",
+ number_of_voices), voice+1, number_of_voices);
+ }
+ if (voice<number_of_voices-1) {
+ gregorio_messagef("det_score", VERBOSITY_INFO, 0,
+ ngt_("not enough voices in note : %d found, %d expected, "
+ "completing with empty neume", "not enough voices in note "
+ ": %d found, %d expected, completing with empty neume",
+ voice+1), voice+1, number_of_voices);
+ complete_with_nulls(voice);
+ }
+ voice=0;
+ nabc_state=0;
+ update_position_with_space();
+ }
+#line 2654 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 73:
+#line 1016 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (voice<number_of_voices) {
+ gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1]));
+ free((yyvsp[-1]).text);
+ voice++;
+ }
+ else {
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ ngt_("too many voices in note : %d found, %d expected",
+ "too many voices in note : %d found, %d expected",
+ number_of_voices), voice+1, number_of_voices);
+ }
+ }
+#line 2672 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 74:
+#line 1029 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (!nabc_lines) {
+ gregorio_message(_("You used character \"|\" in gabc without "
+ "setting \"nabc-lines\" parameter. Please "
+ "set it in your gabc header."),
+ "det_score", VERBOSITY_FATAL, 0);
+ }
+ if (voice<number_of_voices) {
+ gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1]));
+ free((yyvsp[-1]).text);
+ nabc_state = (nabc_state + 1) % (nabc_lines+1);
+ }
+ }
+#line 2690 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 75:
+#line 1042 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ elements[voice]=NULL;
+ voice=0;
+ nabc_state=0;
+ }
+#line 2700 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 76:
+#line 1047 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ elements[voice]=NULL;
+ voice=0;
+ nabc_state=0;
+ update_position_with_space();
+ }
+#line 2711 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 77:
+#line 1056 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_ITALIC);
+ }
+#line 2719 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 78:
+#line 1059 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_TT);
+ }
+#line 2727 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 79:
+#line 1062 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_UNDERLINED);
+ }
+#line 2735 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 80:
+#line 1065 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_COLORED);
+ }
+#line 2743 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 81:
+#line 1068 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_BOLD);
+ }
+#line 2751 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 82:
+#line 1071 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_SMALL_CAPS);
+ }
+#line 2759 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 83:
+#line 1074 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_VERBATIM);
+ }
+#line 2767 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 84:
+#line 1077 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_style(ST_SPECIAL_CHAR);
+ }
+#line 2775 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 85:
+#line 1080 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (!center_is_determined) {
+ gregorio_gabc_add_style(ST_FORCED_CENTER);
+ center_is_determined=CENTER_HALF_DETERMINED;
+ }
+ }
+#line 2786 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 86:
+#line 1089 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_ITALIC);
+ }
+#line 2794 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 87:
+#line 1092 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_TT);
+ }
+#line 2802 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 88:
+#line 1095 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_UNDERLINED);
+ }
+#line 2810 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 89:
+#line 1098 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_COLORED);
+ }
+#line 2818 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 90:
+#line 1101 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_BOLD);
+ }
+#line 2826 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 91:
+#line 1104 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_SMALL_CAPS);
+ }
+#line 2834 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 92:
+#line 1107 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_VERBATIM);
+ }
+#line 2842 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 93:
+#line 1110 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_end_style(ST_SPECIAL_CHAR);
+ }
+#line 2850 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 94:
+#line 1113 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ if (center_is_determined==CENTER_HALF_DETERMINED) {
+ gregorio_gabc_end_style(ST_FORCED_CENTER);
+ center_is_determined=CENTER_FULLY_DETERMINED;
+ }
+ }
+#line 2861 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 95:
+#line 1122 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ euouae = EUOUAE_BEGINNING;
+ }
+#line 2869 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 96:
+#line 1125 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ euouae = EUOUAE_END;
+ }
+#line 2877 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 97:
+#line 1131 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ no_linebreak_area = NLBA_BEGINNING;
+ }
+#line 2885 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 98:
+#line 1134 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ no_linebreak_area = NLBA_END;
+ }
+#line 2893 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 100:
+#line 1141 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ gregorio_gabc_add_text((yyvsp[0]).text);
+ }
+#line 2901 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 107:
+#line 1155 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ start_translation(TR_NORMAL);
+ }
+#line 2909 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 108:
+#line 1161 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ end_translation();
+ }
+#line 2917 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 109:
+#line 1164 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ start_translation(TR_WITH_CENTER_END);
+ }
+#line 2925 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 110:
+#line 1170 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ abovelinestext = (yyvsp[-1]).text;
+ }
+#line 2933 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 111:
+#line 1176 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ rebuild_characters (&current_character, center_is_determined);
+ first_text_character = current_character;
+ close_syllable(&(yylsp[-2]));
+ }
+#line 2943 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 112:
+#line 1181 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ close_syllable(&(yylsp[-3]));
+ }
+#line 2951 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 113:
+#line 1187 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ close_syllable(NULL);
+ }
+#line 2959 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+ case 114:
+#line 1190 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+ {
+ close_syllable(NULL);
+ }
+#line 2967 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ break;
+
+
+#line 2971 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+ *++yylsp = yyloc;
+
+ /* Now 'shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
+ {
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
+ }
+# undef YYSYNTAX_ERROR
+#endif
+ }
+
+ yyerror_range[1] = yylloc;
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, &yylloc);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ yyerror_range[1] = yylsp[1-yylen];
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+ yyerror_range[1] = *yylsp;
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, yylsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+
+ yyerror_range[2] = yylloc;
+ /* Using YYLLOC is tempting, but would change the location of
+ the lookahead. YYLOC is available though. */
+ YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
+ *++yylsp = yyloc;
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined yyoverflow || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, &yylloc);
+ }
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, yylsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ return yyresult;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.h
new file mode 100644
index 00000000000..54e30a15827
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination-y.h
@@ -0,0 +1,221 @@
+/* A Bison parser, made by GNU Bison 3.0.4. */
+
+/* Make sure this file is newer than gabc-score-determinatio.y */
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015 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 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+#ifndef YY_GABC_SCORE_DETERMINATION_GABC_GABC_SCORE_DETERMINATION_Y_H_INCLUDED
+# define YY_GABC_SCORE_DETERMINATION_GABC_GABC_SCORE_DETERMINATION_Y_H_INCLUDED
+/* Debug traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int gabc_score_determination_debug;
+#endif
+
+/* Token type. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ enum yytokentype
+ {
+ ATTRIBUTE = 258,
+ COLON = 259,
+ SEMICOLON = 260,
+ OFFICE_PART = 261,
+ ANNOTATION = 262,
+ AUTHOR = 263,
+ DATE = 264,
+ MANUSCRIPT = 265,
+ MANUSCRIPT_REFERENCE = 266,
+ MANUSCRIPT_STORAGE_PLACE = 267,
+ TRANSCRIBER = 268,
+ TRANSCRIPTION_DATE = 269,
+ BOOK = 270,
+ STYLE = 271,
+ VIRGULA_POSITION = 272,
+ INITIAL_STYLE = 273,
+ MODE = 274,
+ GREGORIOTEX_FONT = 275,
+ GENERATED_BY = 276,
+ NAME = 277,
+ OPENING_BRACKET = 278,
+ NOTES = 279,
+ VOICE_CUT = 280,
+ CLOSING_BRACKET = 281,
+ NUMBER_OF_VOICES = 282,
+ VOICE_CHANGE = 283,
+ END_OF_DEFINITIONS = 284,
+ SPACE = 285,
+ CHARACTERS = 286,
+ I_BEGINNING = 287,
+ I_END = 288,
+ TT_BEGINNING = 289,
+ TT_END = 290,
+ UL_BEGINNING = 291,
+ UL_END = 292,
+ C_BEGINNING = 293,
+ C_END = 294,
+ B_BEGINNING = 295,
+ B_END = 296,
+ SC_BEGINNING = 297,
+ SC_END = 298,
+ SP_BEGINNING = 299,
+ SP_END = 300,
+ VERB_BEGINNING = 301,
+ VERB = 302,
+ VERB_END = 303,
+ CENTER_BEGINNING = 304,
+ CENTER_END = 305,
+ CLOSING_BRACKET_WITH_SPACE = 306,
+ TRANSLATION_BEGINNING = 307,
+ TRANSLATION_END = 308,
+ GABC_COPYRIGHT = 309,
+ SCORE_COPYRIGHT = 310,
+ OCCASION = 311,
+ METER = 312,
+ COMMENTARY = 313,
+ ARRANGER = 314,
+ GABC_VERSION = 315,
+ USER_NOTES = 316,
+ DEF_MACRO = 317,
+ ALT_BEGIN = 318,
+ ALT_END = 319,
+ CENTERING_SCHEME = 320,
+ TRANSLATION_CENTER_END = 321,
+ BNLBA = 322,
+ ENLBA = 323,
+ EUOUAE_B = 324,
+ EUOUAE_E = 325,
+ NABC_CUT = 326,
+ NABC_LINES = 327,
+ LANGUAGE = 328
+ };
+#endif
+/* Tokens. */
+#define ATTRIBUTE 258
+#define COLON 259
+#define SEMICOLON 260
+#define OFFICE_PART 261
+#define ANNOTATION 262
+#define AUTHOR 263
+#define DATE 264
+#define MANUSCRIPT 265
+#define MANUSCRIPT_REFERENCE 266
+#define MANUSCRIPT_STORAGE_PLACE 267
+#define TRANSCRIBER 268
+#define TRANSCRIPTION_DATE 269
+#define BOOK 270
+#define STYLE 271
+#define VIRGULA_POSITION 272
+#define INITIAL_STYLE 273
+#define MODE 274
+#define GREGORIOTEX_FONT 275
+#define GENERATED_BY 276
+#define NAME 277
+#define OPENING_BRACKET 278
+#define NOTES 279
+#define VOICE_CUT 280
+#define CLOSING_BRACKET 281
+#define NUMBER_OF_VOICES 282
+#define VOICE_CHANGE 283
+#define END_OF_DEFINITIONS 284
+#define SPACE 285
+#define CHARACTERS 286
+#define I_BEGINNING 287
+#define I_END 288
+#define TT_BEGINNING 289
+#define TT_END 290
+#define UL_BEGINNING 291
+#define UL_END 292
+#define C_BEGINNING 293
+#define C_END 294
+#define B_BEGINNING 295
+#define B_END 296
+#define SC_BEGINNING 297
+#define SC_END 298
+#define SP_BEGINNING 299
+#define SP_END 300
+#define VERB_BEGINNING 301
+#define VERB 302
+#define VERB_END 303
+#define CENTER_BEGINNING 304
+#define CENTER_END 305
+#define CLOSING_BRACKET_WITH_SPACE 306
+#define TRANSLATION_BEGINNING 307
+#define TRANSLATION_END 308
+#define GABC_COPYRIGHT 309
+#define SCORE_COPYRIGHT 310
+#define OCCASION 311
+#define METER 312
+#define COMMENTARY 313
+#define ARRANGER 314
+#define GABC_VERSION 315
+#define USER_NOTES 316
+#define DEF_MACRO 317
+#define ALT_BEGIN 318
+#define ALT_END 319
+#define CENTERING_SCHEME 320
+#define TRANSLATION_CENTER_END 321
+#define BNLBA 322
+#define ENLBA 323
+#define EUOUAE_B 324
+#define EUOUAE_E 325
+#define NABC_CUT 326
+#define NABC_LINES 327
+#define LANGUAGE 328
+
+/* Value type. */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+/* Location type. */
+#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
+typedef struct YYLTYPE YYLTYPE;
+struct YYLTYPE
+{
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+};
+# define YYLTYPE_IS_DECLARED 1
+# define YYLTYPE_IS_TRIVIAL 1
+#endif
+
+
+extern YYSTYPE gabc_score_determination_lval;
+extern YYLTYPE gabc_score_determination_lloc;
+int gabc_score_determination_parse (void);
+
+#endif /* !YY_GABC_SCORE_DETERMINATION_GABC_GABC_SCORE_DETERMINATION_Y_H_INCLUDED */
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.h
new file mode 100644
index 00000000000..0eb91794321
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.h
@@ -0,0 +1,34 @@
+/*
+ * Gregorio score determination in gabc input.
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "gabc.h"
+
+typedef union gabc_score_determination_lval_t {
+ char *text;
+ char character;
+} gabc_score_determination_lval_t;
+
+#define YYSTYPE gabc_score_determination_lval_t
+#define YYSTYPE_IS_DECLARED 1
+
+int gabc_score_determination_lex(void);
+#define YY_DECL int gabc_score_determination_lex(void)
+
+#define YYLTYPE gregorio_scanner_location
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.l b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.l
new file mode 100644
index 00000000000..4d2a07992e4
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.l
@@ -0,0 +1,416 @@
+%{
+/*
+ * Gregorio score determination in gabc input.
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "struct.h"
+#include "messages.h"
+
+#include "gabc.h"
+#include "gabc-score-determination.h"
+#include "gabc-score-determination-y.h"
+
+static unsigned char style_stack = 0;
+
+#define YY_NO_INPUT
+
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) { \
+ int c = '*'; \
+ size_t n; \
+ for (n = 0; n < max_size \
+ && (c = getc(gabc_score_determination_in)) != EOF \
+ && c != '\n'; ++n ) { \
+ buf[n] = (char) c; \
+ } \
+ if (c == '\n') { \
+ buf[n++] = (char) c; \
+ } \
+ if (c == EOF && ferror(gabc_score_determination_in)) { \
+ YY_FATAL_ERROR("input in flex scanner failed"); \
+ } \
+ result = n; \
+ } else { \
+ errno=0; \
+ while ((result = fread(buf, 1, max_size, gabc_score_determination_in)) \
+ == 0 && ferror(gabc_score_determination_in)) { \
+ if (errno != EINTR) { \
+ YY_FATAL_ERROR("input in flex scanner failed"); \
+ break; \
+ } \
+ errno = 0; \
+ clearerr(gabc_score_determination_in); \
+ } \
+ } \
+ gabc_digest(buf, result)
+
+#define YY_USER_ACTION gabc_update_location(&gabc_score_determination_lloc, \
+ gabc_score_determination_text, gabc_score_determination_leng);
+
+%}
+
+%x attribute
+%x score
+%x notes
+%x style
+%x verb
+%x comments
+%x inicomments
+%x alt
+
+%option stack
+%option pointer
+%option nounput
+%option noyy_push_state
+%option noyy_pop_state
+%option noyy_top_state
+%option align
+%option noread
+%option nomain
+%option noalways-interactive
+%option nonever-interactive
+%option prefix="gabc_score_determination_"
+%option noyywrap
+%option 8bit
+
+
+/* The expression for attribute below is rather messy because we allow
+for (a) single-line values, ending with a semicolon at end of line or a
+double semicolon, (b) multi-line values, which end at a double
+semicolon. */
+
+%%
+<INITIAL>^(\xBB|\xEF|\xBF)* {
+ /* BOM written by a lot of windows softwares when they write UTF-8 */
+ }
+<INITIAL>^[\n\r]+ {
+ /* ignoring empty lines */
+ }
+<INITIAL>^[\%#] {
+ BEGIN(inicomments);
+ }
+<inicomments>(\n|\r)+ {
+ BEGIN(INITIAL);
+ }
+<inicomments>[^\n\r]* {
+ /* ignored */
+ }
+<INITIAL>:(\ )? {
+ BEGIN(attribute);
+ return COLON;
+ }
+<attribute>[^;\n\r]*(;[^;\n\r]+)*([\n\r]+[^;]*(;[^;]+)*)? {
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return ATTRIBUTE;
+ }
+<attribute>;(;|[\n\r]+) {
+ BEGIN(INITIAL);
+ return SEMICOLON;
+ }
+<INITIAL>def-m[0-9] {
+ gabc_score_determination_lval.character = gabc_score_determination_text[5];
+ return DEF_MACRO;
+ }
+<INITIAL>number-of-voices {
+ return NUMBER_OF_VOICES;
+ }
+<INITIAL>name {
+ return NAME;
+ }
+<INITIAL>score-copyright {
+ return SCORE_COPYRIGHT;
+ }
+<INITIAL>gabc-copyright {
+ return GABC_COPYRIGHT;
+ }
+<INITIAL>office-part {
+ return OFFICE_PART;
+ }
+<INITIAL>occasion {
+ return OCCASION;
+ }
+<INITIAL>meter {
+ return METER;
+ }
+<INITIAL>commentary {
+ return COMMENTARY;
+ }
+<INITIAL>arranger {
+ return ARRANGER;
+ }
+<INITIAL>gabc-version {
+ return GABC_VERSION;
+ }
+<INITIAL>initial-style {
+ return INITIAL_STYLE;
+ }
+<INITIAL>mode {
+ return MODE;
+ }
+<INITIAL>annotation {
+ return ANNOTATION;
+ }
+<INITIAL>author {
+ return AUTHOR;
+ }
+<INITIAL>date {
+ return DATE;
+ }
+<INITIAL>manuscript {
+ return MANUSCRIPT;
+ }
+<INITIAL>manuscript-reference {
+ return MANUSCRIPT_REFERENCE;
+ }
+<INITIAL>manuscript-storage-place {
+ return MANUSCRIPT_STORAGE_PLACE;
+ }
+<INITIAL>book {
+ return BOOK;
+ }
+<INITIAL>transcriber {
+ return TRANSCRIBER;
+ }
+<INITIAL>generated-by {
+ return GENERATED_BY;
+ }
+<INITIAL>centering-scheme {
+ return CENTERING_SCHEME;
+ }
+<INITIAL>language {
+ return LANGUAGE;
+ }
+<INITIAL>transcription-date {
+ return TRANSCRIPTION_DATE;
+ }
+<INITIAL>style {
+ return STYLE;
+ }
+<INITIAL>virgula-position {
+ return VIRGULA_POSITION;
+ }
+<INITIAL>gregoriotex-font {
+ return GREGORIOTEX_FONT;
+ }
+<INITIAL>nabc-lines {
+ return NABC_LINES;
+ }
+<INITIAL>user-notes {
+ return USER_NOTES;
+ }
+<INITIAL>--(.*) {
+ return VOICE_CHANGE;
+ }
+<INITIAL>%(%)*(\n|\r)+ {
+ BEGIN(score);
+ return END_OF_DEFINITIONS;
+ }
+<INITIAL>. {
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ _("unrecognized character: \"%c\" in definition part"),
+ gabc_score_determination_text[0]);
+ }
+<score>[^\{\}\(\[\]<%]+ {
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+<score,style><i> {
+ BEGIN(style);
+ style_stack ++;
+ return I_BEGINNING;
+ }
+<score,style><nlba> {
+ return BNLBA;
+ }
+<score,style><\/nlba> {
+ return ENLBA;
+ }
+<style><\/i> {
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return I_END;
+ }
+<score,style><tt> {
+ BEGIN(style);
+ style_stack ++;
+ return TT_BEGINNING;
+ }
+<style><\/tt> {
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return TT_END;
+ }
+<score,style><ul> {
+ BEGIN(style);
+ style_stack ++;
+ return UL_BEGINNING;
+ }
+<style><\/ul> {
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return UL_END;
+ }
+<score,style><c> {
+ BEGIN(style);
+ style_stack ++;
+ return C_BEGINNING;
+ }
+<style><\/c> {
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return C_END;
+ }
+<score,style><b> {
+ BEGIN(style);
+ style_stack ++;
+ return B_BEGINNING;
+ }
+<style><\/b> {
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return B_END;
+ }
+<score,style><sc> {
+ BEGIN(style);
+ style_stack ++;
+ return SC_BEGINNING;
+ }
+<style><\/sc> {
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return SC_END;
+ }
+<score,style><sp> {
+ BEGIN(style);
+ style_stack ++;
+ return SP_BEGINNING;
+ }
+<style><\/sp> {
+ style_stack --;
+ if (style_stack == 0) {
+ BEGIN(score);
+ }
+ return SP_END;
+ }
+<style>[^<\{\}]* {
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+<score>\% {
+ BEGIN(comments);
+ }
+<comments>(\n|\r)+ {
+ BEGIN(score);
+ }
+<comments>[^\n\r]* {
+ /* ignored */
+ }
+<style,score><v> {
+ BEGIN(verb);
+ return VERB_BEGINNING;
+ }
+<verb><\/v> {
+ if (style_stack == 0) {
+ BEGIN(score);
+ } else {
+ BEGIN(style);
+ }
+ return VERB_END;
+ }
+<verb>[^<]* {
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+<verb,style,score,alt>< {
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+<score,style>\{ {
+ return CENTER_BEGINNING;
+ }
+<score,style>\} {
+ return CENTER_END;
+ }
+<score><alt> {
+ BEGIN(alt);
+ return ALT_BEGIN;
+ }
+<alt>[^<]* {
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return CHARACTERS;
+ }
+<alt><\/alt> {
+ BEGIN(score);
+ return ALT_END;
+ }
+<score><eu> {
+ return EUOUAE_B;
+ }
+<score><\/eu> {
+ return EUOUAE_E;
+ }
+<score>\[\/] {
+ return TRANSLATION_CENTER_END;
+ }
+<score>\[ {
+ return TRANSLATION_BEGINNING;
+ }
+<score>\] {
+ return TRANSLATION_END;
+ }
+<score>\( {
+ BEGIN(notes);
+ return OPENING_BRACKET;
+ }
+<notes>[^&|\)]* {
+ gabc_score_determination_lval.text = strdup(gabc_score_determination_text);
+ return NOTES;
+ }
+<notes>& {
+ return VOICE_CUT;
+ }
+<notes>\| {
+ return NABC_CUT;
+ }
+<notes>\) {
+ BEGIN(score);
+ return CLOSING_BRACKET;
+ }
+<notes>\)(\ |\t|\n|\r)+ {
+ BEGIN(score);
+ return CLOSING_BRACKET_WITH_SPACE;
+ }
+%%
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.y b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.y
new file mode 100644
index 00000000000..40f70133ee9
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-score-determination.y
@@ -0,0 +1,1203 @@
+%{
+/*
+ * Gregorio score determination in gabc input.
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+/*
+ *
+ * This file is certainly not the most easy to understand, it is a bison file.
+ * See the bison manual on gnu.org for further details.
+ *
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "bool.h"
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+#include "characters.h"
+#include "sha1.h"
+#include "plugins.h"
+#include "gabc.h"
+
+#define YYLLOC_DEFAULT(Current, Rhs, N) \
+ if (N) { \
+ (Current).first_line = YYRHSLOC(Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).first_offset = YYRHSLOC (Rhs, 1).first_offset; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ (Current).last_offset = YYRHSLOC (Rhs, N).last_offset; \
+ } else { \
+ (Current).first_line = (Current).last_line = YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = YYRHSLOC (Rhs, 0).last_column; \
+ (Current).first_offset = (Current).last_offset = YYRHSLOC (Rhs, 0).last_offset; \
+ }
+
+#include "gabc-score-determination.h"
+#include "gabc-score-determination-l.h"
+
+/* uncomment it if you want to have an interactive shell to understand the
+ * details on how bison works for a certain input */
+/* int gabc_score_determination_debug=1; */
+
+/*
+ *
+ * We will need some variables and functions through the entire file, we
+ * declare them there:
+ *
+ */
+
+/* the score that we will determine and return */
+static gregorio_score *score;
+/* an array of elements that we will use for each syllable */
+static gregorio_element **elements;
+gregorio_element *current_element;
+/* a table containing the macros to use in gabc file */
+static char *macros[10];
+/* forward declaration of the flex/bison process function */
+static int gabc_score_determination_parse(void);
+/* other variables that we will have to use */
+static gregorio_character *current_character;
+static gregorio_character *first_text_character;
+static gregorio_character *first_translation_character;
+static gregorio_tr_centering translation_type;
+static gregorio_nlba no_linebreak_area;
+static gregorio_euouae euouae;
+static gregorio_voice_info *current_voice_info;
+static int number_of_voices;
+static int voice;
+/* see comments on text to understand this */
+static gregorio_center_determination center_is_determined;
+/* current_key is... the current key... updated by each notes determination
+ * (for key changes) */
+static int current_key = DEFAULT_KEY;
+static bool got_language = false;
+static struct sha1_ctx digester;
+
+static __inline void check_multiple(const char *name, bool exists) {
+ if (exists) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("several %s definitions found, only the last will be taken "
+ "into consideration"), name);
+ }
+}
+
+static void gabc_score_determination_error(const char *error_str)
+{
+ gregorio_message(error_str, (const char *) "gabc_score_determination_parse",
+ VERBOSITY_ERROR, 0);
+}
+
+static void gabc_fix_custos(gregorio_score *score_to_check)
+{
+ gregorio_syllable *current_syllable;
+ gregorio_element *current_element;
+ gregorio_element *custo_element;
+ char pitch = 0;
+ char pitch_difference = 0;
+ int newkey;
+ int current_key;
+ if (!score_to_check || !score_to_check->first_syllable
+ || !score_to_check->first_voice_info) {
+ return;
+ }
+ current_key = score_to_check->first_voice_info->initial_key;
+ current_syllable = score_to_check->first_syllable;
+ while (current_syllable) {
+ current_element = (current_syllable->elements)[0];
+ while (current_element) {
+ if (current_element->type == GRE_CUSTOS) {
+ custo_element = current_element;
+ pitch = custo_element->u.misc.pitched.pitch;
+ /* we look for the key */
+ while (current_element) {
+ switch (current_element->type) {
+ case GRE_C_KEY_CHANGE:
+ case GRE_C_KEY_CHANGE_FLATED:
+ pitch = gregorio_determine_next_pitch(current_syllable,
+ current_element, NULL);
+ newkey = gregorio_calculate_new_key(C_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ pitch_difference = (char) newkey - (char) current_key;
+ pitch -= pitch_difference;
+ current_key = newkey;
+ break;
+ case GRE_F_KEY_CHANGE:
+ case GRE_F_KEY_CHANGE_FLATED:
+ pitch = gregorio_determine_next_pitch(current_syllable,
+ current_element, NULL);
+ newkey = gregorio_calculate_new_key(F_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ pitch_difference = (char) newkey - (char) current_key;
+ pitch -= pitch_difference;
+ current_key = newkey;
+ break;
+ default:
+ break;
+ }
+ if (!custo_element->u.misc.pitched.force_pitch) {
+ while (pitch < LOWEST_PITCH) {
+ pitch += 7;
+ }
+ while (pitch > HIGHEST_PITCH) {
+ pitch -= 7;
+ }
+ custo_element->u.misc.pitched.pitch = pitch;
+ }
+ assert(custo_element->u.misc.pitched.pitch >= LOWEST_PITCH
+ && custo_element->u.misc.pitched.pitch
+ <= HIGHEST_PITCH);
+ current_element = current_element->next;
+ }
+ }
+ if (current_element) {
+ if (current_element->type == GRE_C_KEY_CHANGE
+ || current_element->type == GRE_C_KEY_CHANGE_FLATED) {
+ current_key = gregorio_calculate_new_key(C_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ }
+ if (current_element->type == GRE_F_KEY_CHANGE
+ || current_element->type == GRE_F_KEY_CHANGE_FLATED) {
+ current_key = gregorio_calculate_new_key(F_KEY,
+ current_element->u.misc.pitched.pitch - '0');
+ }
+ current_element = current_element->next;
+ }
+ }
+ current_syllable = current_syllable->next_syllable;
+ }
+}
+
+/*
+ * A function that checks to score integrity. For now it is... quite
+ * ridiculous... but it might be improved in the future.
+ */
+
+static int check_score_integrity(gregorio_score *score_to_check)
+{
+ if (!score_to_check) {
+ return 0;
+ }
+ return 1;
+}
+
+/*
+ * Another function to be improved: this one checks the validity of the voice_infos.
+ */
+
+static int check_infos_integrity(gregorio_score *score_to_check)
+{
+ if (!score_to_check->name) {
+ gregorio_message(_("no name specified, put `name:...;' at the "
+ "beginning of the file, can be dangerous with some output "
+ "formats"), "det_score", VERBOSITY_WARNING, 0);
+ }
+ return 1;
+}
+
+/*
+ * The function that will initialize the variables.
+ */
+
+static void initialize_variables(void)
+{
+ int i;
+ /* build a brand new empty score */
+ score = gregorio_new_score();
+ /* initialization of the first voice info to an empty voice info */
+ current_voice_info = NULL;
+ gregorio_add_voice_info(&current_voice_info);
+ score->first_voice_info = current_voice_info;
+ /* other initializations */
+ number_of_voices = 0;
+ voice = 1;
+ current_character = NULL;
+ first_translation_character = NULL;
+ first_text_character = NULL;
+ translation_type = TR_NORMAL;
+ no_linebreak_area = NLBA_NORMAL;
+ euouae = EUOUAE_NORMAL;
+ center_is_determined = 0;
+ for (i = 0; i < 10; i++) {
+ macros[i] = NULL;
+ }
+}
+
+/*
+ * function that frees the variables that need it, for when we have finished to
+ * determine the score
+ */
+
+static void free_variables(void)
+{
+ int i;
+ free(elements);
+ for (i = 0; i < 10; i++) {
+ free(macros[i]);
+ }
+}
+
+/* see whether a voice_info is empty */
+static int voice_info_is_not_empty(const gregorio_voice_info *voice_info)
+{
+ return (voice_info->initial_key != 5 || voice_info->style
+ || voice_info->virgula_position);
+}
+
+/*
+ * a function called when we see "--\n" that end the infos for a certain voice
+ */
+static void next_voice_info(void)
+{
+ /* we must do this test in the case where there would be a "--" before
+ * first_declarations */
+ if (voice_info_is_not_empty(current_voice_info)) {
+ gregorio_add_voice_info(&current_voice_info);
+ voice++;
+ }
+}
+
+/*
+ * Function that frees the voice_infos for voices > final_count. Useful if
+ * there are too many voice_infos
+ */
+
+static void reajust_voice_infos(gregorio_voice_info *voice_info,
+ int final_count)
+{
+ int i = 1;
+ while (voice_info && i <= final_count) {
+ voice_info = voice_info->next_voice_info;
+ }
+ gregorio_free_voice_infos(voice_info);
+}
+
+/*
+ * Function called when we have reached the end of the definitions, it tries to
+ * make the voice_infos coherent.
+ */
+static void end_definitions(void)
+{
+ int i;
+
+ if (!check_infos_integrity(score)) {
+ gregorio_message(_("can't determine valid infos on the score"),
+ "det_score", VERBOSITY_ERROR, 0);
+ }
+ if (!number_of_voices) {
+ if (voice > MAX_NUMBER_OF_VOICES) {
+ voice = MAX_NUMBER_OF_VOICES;
+ reajust_voice_infos(score->first_voice_info, number_of_voices);
+ }
+ number_of_voices = voice;
+ score->number_of_voices = voice;
+ } else {
+ if (number_of_voices > voice) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ ngt_("not enough voice infos found: %d found, %d waited, "
+ "%d assumed", "not enough voice infos found: %d found, %d "
+ "waited, %d assumed", voice), voice,
+ number_of_voices, voice);
+ score->number_of_voices = voice;
+ number_of_voices = voice;
+ } else {
+ if (number_of_voices < voice) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ ngt_("too many voice infos found: %d found, %d "
+ "waited, %d assumed", "not enough voice infos found: "
+ "%d found, %d waited, %d assumed",
+ number_of_voices), voice, number_of_voices,
+ number_of_voices);
+ }
+ }
+ }
+ /* voice is now voice-1, so that it can be the index of elements */
+ voice = 0;
+ elements = (gregorio_element **) malloc(number_of_voices *
+ sizeof(gregorio_element *));
+ for (i = 0; i < number_of_voices; i++) {
+ elements[i] = NULL;
+ }
+
+ if (!got_language) {
+ static char lang_Latin[] = "Latin";
+ gregorio_set_centering_language(lang_Latin);
+ }
+}
+
+/*
+ * Here starts the code for the determinations of the notes. The notes are not
+ * precisely determined here, we separate the text describing the notes of each
+ * voice, and we call determine_elements_from_string to really determine them.
+ */
+static char position = WORD_BEGINNING;
+static gregorio_syllable *current_syllable = NULL;
+static char *abovelinestext = NULL;
+
+/*
+ * Function called when we see a ")", it completes the gregorio_element array
+ * of the syllable with NULL pointers. Usefull in the cases where for example
+ * you have two voices, but a voice that is silent on a certain syllable.
+ */
+static void complete_with_nulls(int last_voice)
+{
+ int i;
+ for (i = last_voice + 1; i < number_of_voices; i++) {
+ elements[i] = NULL;
+ }
+}
+
+/*
+ * Function called each time we find a space, it updates the current position.
+ */
+static void update_position_with_space(void)
+{
+ if (position == WORD_MIDDLE) {
+ position = WORD_END;
+ }
+ if (position == WORD_BEGINNING) {
+ position = WORD_ONE_SYLLABLE;
+ }
+}
+
+/*
+ * When we encounter a translation center ending, we call this function that
+ * sets translation_type = TR_WITH_CENTER_BEGINNING on previous syllable with
+ * translation
+ */
+static void gregorio_set_translation_center_beginning(
+ gregorio_syllable *current_syllable)
+{
+ gregorio_syllable *syllable = current_syllable->previous_syllable;
+ while (syllable) {
+ if (syllable->translation_type == TR_WITH_CENTER_END) {
+ gregorio_message("encountering translation centering end but "
+ "cannot find translation centering beginning...",
+ "set_translation_center_beginning", VERBOSITY_ERROR, 0);
+ current_syllable->translation_type = TR_NORMAL;
+ return;
+ }
+ if (syllable->translation) {
+ syllable->translation_type = TR_WITH_CENTER_BEGINNING;
+ return;
+ }
+ syllable = syllable->previous_syllable;
+ }
+ /* we didn't find any beginning... */
+ gregorio_message("encountering translation centering end but cannot find "
+ "translation centering beginning...",
+ "set_translation_center_beginning", VERBOSITY_ERROR, 0);
+ current_syllable->translation_type = TR_NORMAL;
+}
+
+static void rebuild_characters(gregorio_character **param_character,
+ gregorio_center_determination center_is_determined)
+{
+ bool has_initial = score->initial_style != NO_INITIAL;
+ /* we rebuild the first syllable text if it is the first syllable, or if
+ * it is the second when the first has no text.
+ * it is a patch for cases like (c4) Al(ab)le(ab) */
+ if ((!score->first_syllable && has_initial && current_character)
+ || (current_syllable && !current_syllable->previous_syllable
+ && !current_syllable->text && current_character)) {
+ gregorio_rebuild_first_syllable(&current_character, has_initial);
+ }
+
+ gregorio_rebuild_characters(param_character, center_is_determined,
+ has_initial);
+}
+
+/*
+ * Function to close a syllable and update the position.
+ */
+
+static void close_syllable(YYLTYPE *loc)
+{
+ int i;
+ gregorio_add_syllable(&current_syllable, number_of_voices, elements,
+ first_text_character, first_translation_character, position,
+ abovelinestext, translation_type, no_linebreak_area, euouae, loc);
+ if (!score->first_syllable) {
+ /* we rebuild the first syllable if we have to */
+ score->first_syllable = current_syllable;
+ }
+ if (translation_type == TR_WITH_CENTER_END) {
+ gregorio_set_translation_center_beginning(current_syllable);
+ }
+ /* we update the position */
+ if (position == WORD_BEGINNING) {
+ position = WORD_MIDDLE;
+ }
+ if (position == WORD_ONE_SYLLABLE || position == WORD_END) {
+ position = WORD_BEGINNING;
+ }
+ center_is_determined = CENTER_NOT_DETERMINED;
+ current_character = NULL;
+ first_text_character = NULL;
+ first_translation_character = NULL;
+ translation_type = TR_NORMAL;
+ no_linebreak_area = NLBA_NORMAL;
+ euouae = EUOUAE_NORMAL;
+ abovelinestext = NULL;
+ for (i = 0; i < number_of_voices; i++) {
+ elements[i] = NULL;
+ }
+ current_element = NULL;
+}
+
+/* a function called when we see a [, basically, all characters are added to
+ * the translation pointer instead of the text pointer */
+static void start_translation(unsigned char asked_translation_type)
+{
+ rebuild_characters(&current_character, center_is_determined);
+ first_text_character = current_character;
+ /* the middle letters of the translation have no sense */
+ center_is_determined = CENTER_FULLY_DETERMINED;
+ current_character = NULL;
+ translation_type = asked_translation_type;
+}
+
+static void end_translation(void)
+{
+ rebuild_characters(&current_character, center_is_determined);
+ first_translation_character = current_character;
+}
+
+/*
+ * gregorio_gabc_add_text is the function called when lex returns a char *. In
+ * this function we convert it into grewchar, and then we add the corresponding
+ * gregorio_characters in the list of gregorio_characters.
+ */
+
+static void gregorio_gabc_add_text(char *mbcharacters)
+{
+ if (current_character) {
+ current_character->next_character = gregorio_build_char_list_from_buf(
+ mbcharacters);
+ current_character->next_character->previous_character =
+ current_character;
+ } else {
+ current_character = gregorio_build_char_list_from_buf(mbcharacters);
+ }
+ while (current_character && current_character->next_character) {
+ current_character = current_character->next_character;
+ }
+ free(mbcharacters);
+}
+
+/*
+ * the function called when centering_scheme is seen in gabc
+ */
+static void set_centering_scheme(char *sc)
+{
+ gregorio_message("\"centering-scheme\" header is deprecated. Please use "
+ "\\setlyriccentering in TeX instead.", "set_centering_scheme",
+ VERBOSITY_DEPRECATION, 0);
+ if (strncmp((const char *) sc, "latine", 6) == 0) {
+ score->centering = SCHEME_VOWEL;
+ return;
+ }
+ if (strncmp((const char *) sc, "english", 6) == 0) {
+ score->centering = SCHEME_SYLLABLE;
+ return;
+ }
+ gregorio_message("centering-scheme unknown value: must be \"latine\" "
+ "or \"english\"", "set_centering_scheme", VERBOSITY_WARNING, 0);
+}
+
+/*
+ *
+ * The two functions called when lex returns a style, we simply add it. All the
+ * complex things will be done by the function after...
+ *
+ */
+
+static void gregorio_gabc_add_style(unsigned char style)
+{
+ gregorio_begin_style(&current_character, style);
+}
+
+static void gregorio_gabc_end_style(unsigned char style)
+{
+ gregorio_end_style(&current_character, style);
+}
+
+void gabc_digest(const void *const buf, const size_t size)
+{
+ sha1_process_bytes(buf, size, &digester);
+}
+
+/*
+ * The "main" function. It is the function that is called when we have to read
+ * a gabc file. It takes a file descriptor, that is to say a file that is
+ * aleady open. It returns a valid gregorio_score
+ */
+
+gregorio_score *gabc_read_score(FILE *f_in)
+{
+ /* compute the SHA-1 digest while parsing, for I/O efficiency */
+ sha1_init_ctx(&digester);
+ /* digest GREGORIO_VERSION to get a different value when the version
+ changes */
+ sha1_process_bytes(GREGORIO_VERSION, strlen(GREGORIO_VERSION), &digester);
+ /* the input file that flex will parse */
+ gabc_score_determination_in = f_in;
+ if (!f_in) {
+ gregorio_message(_("can't read stream from argument, returning NULL "
+ "pointer"), "det_score", VERBOSITY_ERROR, 0);
+ return NULL;
+ }
+ initialize_variables();
+ /* the flex/bison main call, it will build the score (that we have
+ * initialized) */
+ gabc_score_determination_parse();
+ gregorio_fix_initial_keys(score, DEFAULT_KEY);
+ gabc_fix_custos(score);
+ free_variables();
+ /* the we check the validity and integrity of the score we have built. */
+ if (!check_score_integrity(score)) {
+ gregorio_free_score(score);
+ score = NULL;
+ gregorio_message(_("unable to determine a valid score from file"),
+ "det_score", VERBOSITY_FATAL, 0);
+ }
+ sha1_finish_ctx(&digester, score->digest);
+ return score;
+}
+
+unsigned char nabc_state = 0;
+size_t nabc_lines = 0;
+
+static void gabc_y_add_notes(char *notes, YYLTYPE loc) {
+ gregorio_element *new_elements;
+ gregorio_element *last_element;
+ if (nabc_state == 0) {
+ if (!elements[voice]) {
+ elements[voice] = gabc_det_elements_from_string(notes,
+ &current_key, macros, &loc);
+ current_element = elements[voice];
+ } else {
+ new_elements = gabc_det_elements_from_string(notes,
+ &current_key, macros, &loc);
+ last_element = elements[voice];
+ while(last_element->next) {
+ last_element = last_element->next;
+ }
+ last_element->next = new_elements;
+ new_elements->previous = last_element;
+ current_element = new_elements;
+ }
+ } else {
+ if (!elements[voice]) {
+ gregorio_add_element(&elements[voice], NULL);
+ current_element = elements[voice];
+ }
+ if (!current_element) {
+ gregorio_message(_("current_element is null, this shouldn't "
+ "happen!"), "gabc_y_add_notes", VERBOSITY_FATAL, 0);
+ }
+ if (!current_element->nabc) {
+ current_element->nabc = (char **) calloc (nabc_lines,
+ sizeof (char *));
+ }
+ current_element->nabc[nabc_state-1] = strdup(notes);
+ current_element->nabc_lines = nabc_state;
+ }
+}
+%}
+
+%initial-action {
+ @$.first_line = 1;
+ @$.first_column = 0;
+ @$.first_offset = 0;
+ @$.last_line = 1;
+ @$.last_column = 0;
+ @$.last_offset = 0;
+}
+
+%token ATTRIBUTE COLON SEMICOLON OFFICE_PART ANNOTATION AUTHOR DATE
+%token MANUSCRIPT MANUSCRIPT_REFERENCE MANUSCRIPT_STORAGE_PLACE TRANSCRIBER
+%token TRANSCRIPTION_DATE BOOK STYLE VIRGULA_POSITION INITIAL_STYLE MODE
+%token GREGORIOTEX_FONT GENERATED_BY NAME OPENING_BRACKET NOTES VOICE_CUT
+%token CLOSING_BRACKET NUMBER_OF_VOICES VOICE_CHANGE END_OF_DEFINITIONS SPACE
+%token CHARACTERS I_BEGINNING I_END TT_BEGINNING TT_END UL_BEGINNING UL_END
+%token C_BEGINNING C_END B_BEGINNING B_END SC_BEGINNING SC_END SP_BEGINNING
+%token SP_END VERB_BEGINNING VERB VERB_END CENTER_BEGINNING CENTER_END
+%token CLOSING_BRACKET_WITH_SPACE TRANSLATION_BEGINNING TRANSLATION_END
+%token GABC_COPYRIGHT SCORE_COPYRIGHT OCCASION METER COMMENTARY ARRANGER
+%token GABC_VERSION USER_NOTES DEF_MACRO ALT_BEGIN ALT_END CENTERING_SCHEME
+%token TRANSLATION_CENTER_END BNLBA ENLBA EUOUAE_B EUOUAE_E NABC_CUT NABC_LINES
+%token LANGUAGE
+
+%%
+
+score:
+ all_definitions syllables
+ ;
+
+all_definitions:
+ definitions END_OF_DEFINITIONS {
+ end_definitions();
+ }
+ ;
+
+definitions:
+ | definitions definition
+ ;
+
+number_of_voices_definition:
+ NUMBER_OF_VOICES attribute {
+ number_of_voices=atoi($2.text);
+ if (number_of_voices > MAX_NUMBER_OF_VOICES) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("can't define %d voices, maximum is %d"),
+ number_of_voices, MAX_NUMBER_OF_VOICES);
+ }
+ gregorio_set_score_number_of_voices (score, number_of_voices);
+ }
+ ;
+
+macro_definition:
+ DEF_MACRO attribute {
+ macros[$1.character - '0'] = $2.text;
+ }
+ ;
+
+name_definition:
+ NAME attribute {
+ if ($2.text==NULL) {
+ gregorio_message("name can't be empty","det_score",
+ VERBOSITY_WARNING, 0);
+ }
+ check_multiple("name", score->name != NULL);
+ gregorio_set_score_name (score, $2.text);
+ }
+ ;
+
+centering_scheme_definition:
+ CENTERING_SCHEME attribute {
+ set_centering_scheme($2.text);
+ }
+ ;
+
+language_definition:
+ LANGUAGE attribute {
+ check_multiple("language", got_language);
+ gregorio_set_centering_language($2.text);
+ free($2.text);
+ got_language = true;
+ }
+ ;
+
+gabc_copyright_definition:
+ GABC_COPYRIGHT attribute {
+ check_multiple("gabc-copyright", score->gabc_copyright != NULL);
+ gregorio_set_score_gabc_copyright (score, $2.text);
+ }
+ ;
+
+score_copyright_definition:
+ SCORE_COPYRIGHT attribute {
+ check_multiple("score_copyright", score->score_copyright != NULL);
+ gregorio_set_score_score_copyright (score, $2.text);
+ }
+ ;
+
+gregoriotex_font_definition:
+ GREGORIOTEX_FONT attribute {
+ gregorio_message("\"gregoriotex-font\" header is deprecated. "
+ "Please use \\gresetgregoriofont in TeX instead.",
+ "set_gregoriotex_font", VERBOSITY_DEPRECATION, 0);
+ check_multiple("GregorioTeX font", score->gregoriotex_font != NULL);
+ score->gregoriotex_font=$2.text;
+ }
+ ;
+
+office_part_definition:
+ OFFICE_PART attribute {
+ check_multiple("office part", score->office_part != NULL);
+ gregorio_set_score_office_part (score, $2.text);
+ }
+ ;
+
+occasion_definition:
+ OCCASION attribute {
+ check_multiple("occasion", score->occasion != NULL);
+ gregorio_set_score_occasion (score, $2.text);
+ }
+ ;
+
+meter_definition:
+ METER attribute {
+ check_multiple("meter", score->meter != NULL);
+ gregorio_set_score_meter (score, $2.text);
+ }
+ ;
+
+commentary_definition:
+ COMMENTARY attribute {
+ check_multiple("commentary", score->commentary != NULL);
+ gregorio_set_score_commentary (score, $2.text);
+ }
+ ;
+
+arranger_definition:
+ ARRANGER attribute {
+ check_multiple("arranger", score->arranger != NULL);
+ gregorio_set_score_arranger (score, $2.text);
+ }
+ ;
+
+gabc_version_definition:
+ GABC_VERSION attribute {
+ /* So far this handling of the version is rudimentary. When
+ * we start supporting multiple input versions, it will become
+ * more complex. For the moment, just issue a warning. */
+ if (strcmp ($2.text, GABC_CURRENT_VERSION) != 0) {
+ gregorio_message(_("gabc-version is not the current one "
+ GABC_CURRENT_VERSION " ; there may be problems"),
+ "det_score", VERBOSITY_WARNING, 0);
+ }
+ }
+ ;
+
+mode_definition:
+ MODE attribute {
+ check_multiple("mode", score->mode != 0);
+ if ($2.text) {
+ score->mode=atoi($2.text);
+ free($2.text);
+ }
+ }
+ ;
+
+nabc_lines_definition:
+ NABC_LINES attribute {
+ check_multiple("nabc lines", score->nabc_lines != 0);
+ if ($2.text) {
+ nabc_lines=atoi($2.text);
+ score->nabc_lines=nabc_lines;
+ free($2.text);
+ }
+ }
+ ;
+
+initial_style_definition:
+ INITIAL_STYLE attribute {
+ if ($2.text) {
+ score->initial_style=atoi($2.text);
+ free($2.text);
+ }
+ }
+ ;
+
+annotation_definition:
+ ANNOTATION attribute {
+ if (score->annotation [MAX_ANNOTATIONS - 1]) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("too many definitions of annotation found, only the "
+ "first %d will be taken"), MAX_ANNOTATIONS);
+ }
+ gregorio_set_score_annotation (score, $2.text);
+ }
+ ;
+
+author_definition:
+ AUTHOR attribute {
+ check_multiple("author", score->si.author != NULL);
+ gregorio_set_score_author (score, $2.text);
+ }
+ ;
+
+date_definition:
+ DATE attribute {
+ check_multiple("date", score->si.date != NULL);
+ gregorio_set_score_date (score, $2.text);
+ }
+ ;
+
+manuscript_definition:
+ MANUSCRIPT attribute {
+ check_multiple("manuscript", score->si.manuscript != NULL);
+ gregorio_set_score_manuscript (score, $2.text);
+ }
+ ;
+
+manuscript_reference_definition:
+ MANUSCRIPT_REFERENCE attribute {
+ check_multiple("manuscript-reference",
+ score->si.manuscript_reference != NULL);
+ gregorio_set_score_manuscript_reference (score, $2.text);
+ }
+ ;
+
+manuscript_storage_place_definition:
+ MANUSCRIPT_STORAGE_PLACE attribute {
+ check_multiple("manuscript-storage-place",
+ score->si.manuscript_storage_place != NULL);
+ gregorio_set_score_manuscript_storage_place (score, $2.text);
+ }
+ ;
+
+book_definition:
+ BOOK attribute {
+ check_multiple("book", score->si.book != NULL);
+ gregorio_set_score_book (score, $2.text);
+ }
+ ;
+
+transcriber_definition:
+ TRANSCRIBER attribute {
+ check_multiple("transcriber", score->si.transcriber != NULL);
+ gregorio_set_score_transcriber (score, $2.text);
+ /* free($2.text); */
+ }
+ ;
+
+transcription_date_definition:
+ TRANSCRIPTION_DATE attribute {
+ check_multiple("transcription date",
+ score->si.transcription_date != NULL);
+ gregorio_set_score_transcription_date (score, $2.text);
+ }
+ ;
+
+style_definition:
+ STYLE attribute {
+ if (current_voice_info->style) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("several definitions of style found for voice %d, only "
+ "the last will be taken into consideration"), voice);
+ }
+ gregorio_set_voice_style (current_voice_info, $2.text);
+ }
+ ;
+
+virgula_position_definition:
+ VIRGULA_POSITION attribute {
+ if (current_voice_info->virgula_position) {
+ gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
+ _("several definitions of virgula position found for "
+ "voice %d, only the last will be taken into consideration"),
+ voice);
+ }
+ gregorio_set_voice_virgula_position (current_voice_info, $2.text);
+ }
+ ;
+
+
+generated_by_definition:
+ GENERATED_BY attribute {
+ /* set_voice_generated_by (current_voice_info, $2.text); */
+ }
+ ;
+
+user_notes_definition:
+ USER_NOTES attribute {
+ gregorio_set_score_user_notes (score, $2.text);
+ }
+ ;
+
+attribute:
+ COLON ATTRIBUTE SEMICOLON {
+ $$.text = $2.text;
+ }
+ |
+ COLON SEMICOLON {
+ $$.text = NULL;
+ }
+ ;
+
+definition:
+ number_of_voices_definition
+ | name_definition
+ | macro_definition
+ | gabc_copyright_definition
+ | score_copyright_definition
+ | generated_by_definition
+ | virgula_position_definition
+ | style_definition
+ | transcription_date_definition
+ | transcriber_definition
+ | manuscript_storage_place_definition
+ | manuscript_reference_definition
+ | manuscript_definition
+ | book_definition
+ | nabc_lines_definition
+ | date_definition
+ | author_definition
+ | annotation_definition
+ | office_part_definition
+ | occasion_definition
+ | meter_definition
+ | commentary_definition
+ | arranger_definition
+ | gabc_version_definition
+ | initial_style_definition
+ | mode_definition
+ | gregoriotex_font_definition
+ | user_notes_definition
+ | centering_scheme_definition
+ | language_definition
+ | VOICE_CHANGE {
+ next_voice_info();
+ }
+ ;
+
+notes:
+ | notes note
+ ;
+
+note:
+ NOTES CLOSING_BRACKET {
+ if (voice<number_of_voices) {
+ gabc_y_add_notes($1.text, @1);
+ free($1.text);
+ }
+ else {
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ ngt_("too many voices in note : %d found, %d expected",
+ "too many voices in note : %d found, %d expected",
+ number_of_voices), voice+1, number_of_voices);
+ }
+ if (voice<number_of_voices-1) {
+ gregorio_messagef("det_score", VERBOSITY_INFO, 0,
+ ngt_("not enough voices in note : %d found, %d expected, "
+ "completing with empty neume", "not enough voices in note "
+ ": %d found, %d expected, completing with empty neume",
+ voice+1), voice+1, number_of_voices);
+ complete_with_nulls(voice);
+ }
+ voice=0;
+ nabc_state=0;
+ }
+ | NOTES CLOSING_BRACKET_WITH_SPACE {
+ if (voice<number_of_voices) {
+ gabc_y_add_notes($1.text, @1);
+ free($1.text);
+ }
+ else {
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ ngt_("too many voices in note : %d found, %d expected",
+ "too many voices in note : %d found, %d expected",
+ number_of_voices), voice+1, number_of_voices);
+ }
+ if (voice<number_of_voices-1) {
+ gregorio_messagef("det_score", VERBOSITY_INFO, 0,
+ ngt_("not enough voices in note : %d found, %d expected, "
+ "completing with empty neume", "not enough voices in note "
+ ": %d found, %d expected, completing with empty neume",
+ voice+1), voice+1, number_of_voices);
+ complete_with_nulls(voice);
+ }
+ voice=0;
+ nabc_state=0;
+ update_position_with_space();
+ }
+ | NOTES VOICE_CUT {
+ if (voice<number_of_voices) {
+ gabc_y_add_notes($1.text, @1);
+ free($1.text);
+ voice++;
+ }
+ else {
+ gregorio_messagef("det_score", VERBOSITY_ERROR, 0,
+ ngt_("too many voices in note : %d found, %d expected",
+ "too many voices in note : %d found, %d expected",
+ number_of_voices), voice+1, number_of_voices);
+ }
+ }
+ | NOTES NABC_CUT {
+ if (!nabc_lines) {
+ gregorio_message(_("You used character \"|\" in gabc without "
+ "setting \"nabc-lines\" parameter. Please "
+ "set it in your gabc header."),
+ "det_score", VERBOSITY_FATAL, 0);
+ }
+ if (voice<number_of_voices) {
+ gabc_y_add_notes($1.text, @1);
+ free($1.text);
+ nabc_state = (nabc_state + 1) % (nabc_lines+1);
+ }
+ }
+ | CLOSING_BRACKET {
+ elements[voice]=NULL;
+ voice=0;
+ nabc_state=0;
+ }
+ | CLOSING_BRACKET_WITH_SPACE {
+ elements[voice]=NULL;
+ voice=0;
+ nabc_state=0;
+ update_position_with_space();
+ }
+ ;
+
+style_beginning:
+ I_BEGINNING {
+ gregorio_gabc_add_style(ST_ITALIC);
+ }
+ | TT_BEGINNING {
+ gregorio_gabc_add_style(ST_TT);
+ }
+ | UL_BEGINNING {
+ gregorio_gabc_add_style(ST_UNDERLINED);
+ }
+ | C_BEGINNING {
+ gregorio_gabc_add_style(ST_COLORED);
+ }
+ | B_BEGINNING {
+ gregorio_gabc_add_style(ST_BOLD);
+ }
+ | SC_BEGINNING {
+ gregorio_gabc_add_style(ST_SMALL_CAPS);
+ }
+ | VERB_BEGINNING {
+ gregorio_gabc_add_style(ST_VERBATIM);
+ }
+ | SP_BEGINNING {
+ gregorio_gabc_add_style(ST_SPECIAL_CHAR);
+ }
+ | CENTER_BEGINNING {
+ if (!center_is_determined) {
+ gregorio_gabc_add_style(ST_FORCED_CENTER);
+ center_is_determined=CENTER_HALF_DETERMINED;
+ }
+ }
+ ;
+
+style_end:
+ I_END {
+ gregorio_gabc_end_style(ST_ITALIC);
+ }
+ | TT_END {
+ gregorio_gabc_end_style(ST_TT);
+ }
+ | UL_END {
+ gregorio_gabc_end_style(ST_UNDERLINED);
+ }
+ | C_END {
+ gregorio_gabc_end_style(ST_COLORED);
+ }
+ | B_END {
+ gregorio_gabc_end_style(ST_BOLD);
+ }
+ | SC_END {
+ gregorio_gabc_end_style(ST_SMALL_CAPS);
+ }
+ | VERB_END {
+ gregorio_gabc_end_style(ST_VERBATIM);
+ }
+ | SP_END {
+ gregorio_gabc_end_style(ST_SPECIAL_CHAR);
+ }
+ | CENTER_END {
+ if (center_is_determined==CENTER_HALF_DETERMINED) {
+ gregorio_gabc_end_style(ST_FORCED_CENTER);
+ center_is_determined=CENTER_FULLY_DETERMINED;
+ }
+ }
+ ;
+
+euouae:
+ EUOUAE_B {
+ euouae = EUOUAE_BEGINNING;
+ }
+ | EUOUAE_E {
+ euouae = EUOUAE_END;
+ }
+ ;
+
+linebreak_area:
+ BNLBA {
+ no_linebreak_area = NLBA_BEGINNING;
+ }
+ | ENLBA {
+ no_linebreak_area = NLBA_END;
+ }
+ ;
+
+character:
+ above_line_text
+ | CHARACTERS {
+ gregorio_gabc_add_text($1.text);
+ }
+ | style_beginning
+ | style_end
+ | linebreak_area
+ | euouae
+ ;
+
+text:
+ | text character
+ ;
+
+translation_beginning:
+ TRANSLATION_BEGINNING {
+ start_translation(TR_NORMAL);
+ }
+ ;
+
+translation:
+ translation_beginning text TRANSLATION_END {
+ end_translation();
+ }
+ | TRANSLATION_CENTER_END {
+ start_translation(TR_WITH_CENTER_END);
+ }
+ ;
+
+above_line_text:
+ ALT_BEGIN CHARACTERS ALT_END {
+ abovelinestext = $2.text;
+ }
+ ;
+
+syllable_with_notes:
+ text OPENING_BRACKET notes {
+ rebuild_characters (&current_character, center_is_determined);
+ first_text_character = current_character;
+ close_syllable(&@1);
+ }
+ | text translation OPENING_BRACKET notes {
+ close_syllable(&@1);
+ }
+ ;
+
+notes_without_word:
+ OPENING_BRACKET notes {
+ close_syllable(NULL);
+ }
+ | translation OPENING_BRACKET notes {
+ close_syllable(NULL);
+ }
+ ;
+
+syllable:
+ syllable_with_notes
+ | notes_without_word
+ ;
+
+syllables:
+ | syllables syllable
+ ;
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-write.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-write.c
new file mode 100644
index 00000000000..e5375f62316
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc-write.c
@@ -0,0 +1,875 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ *
+ * This is a simple and easyly understandable output module. If you want to
+ * write a module, you can consider it as a model.
+ */
+
+#include "config.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h> /* for strchr */
+#include "bool.h"
+#include "characters.h"
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+#include "plugins.h"
+
+#include "gabc.h"
+
+static __inline char pitch_letter(const char height) {
+ return height + 'a' - LOWEST_PITCH;
+}
+
+/*
+ * Output one attribute, allowing for multi-line values
+ */
+static void gabc_write_str_attribute(FILE *f, const char *name,
+ const char *attr)
+{
+ if (attr) {
+ fprintf(f, "%s: %s%s;\n", name, attr, strchr(attr, '\n') ? ";" : "");
+ }
+}
+
+/*
+ *
+ * This function write a gregorio_voice_info. Still very simple.
+ *
+ */
+
+static void gabc_write_voice_info(FILE *f, gregorio_voice_info *voice_info)
+{
+ if (!voice_info) {
+ gregorio_message(_("no voice info"), "gabc_write_voice_info",
+ VERBOSITY_WARNING, 0);
+ return;
+ }
+ if (voice_info->style) {
+ fprintf(f, "style: %s;\n", voice_info->style);
+ }
+ if (voice_info->virgula_position) {
+ fprintf(f, "virgula-position: %s;\n", voice_info->virgula_position);
+ }
+ /* The clef, voice_info->initial_key, is now output in the gabc proper. */
+}
+
+/*
+ *
+ * Then we start the functions made to write the text of the syllable. See
+ * comments on struct.h and struct-utils.c to understand more deeply.
+ *
+ * This first function will be called each time we will encounter a
+ * gregorio_character which is the beginning of a style.
+ *
+ */
+
+static void gabc_write_begin(FILE *f, grestyle_style style)
+{
+ switch (style) {
+ case ST_ITALIC:
+ fprintf(f, "<i>");
+ break;
+ case ST_COLORED:
+ fprintf(f, "<c>");
+ break;
+ case ST_SMALL_CAPS:
+ fprintf(f, "<sc>");
+ break;
+ case ST_BOLD:
+ fprintf(f, "<b>");
+ break;
+ case ST_FORCED_CENTER:
+ fprintf(f, "{");
+ break;
+ case ST_TT:
+ fprintf(f, "<tt>");
+ break;
+ case ST_UNDERLINED:
+ fprintf(f, "<ul>");
+ break;
+ default:
+ break;
+ }
+}
+
+/*
+ *
+ * This function is about the same but for ends of styles.
+ *
+ */
+
+static void gabc_write_end(FILE *f, grestyle_style style)
+{
+ switch (style) {
+ case ST_ITALIC:
+ fprintf(f, "</i>");
+ break;
+ case ST_COLORED:
+ fprintf(f, "</c>");
+ break;
+ case ST_SMALL_CAPS:
+ fprintf(f, "</sc>");
+ break;
+ case ST_BOLD:
+ fprintf(f, "</b>");
+ break;
+ case ST_FORCED_CENTER:
+ fprintf(f, "}");
+ break;
+ case ST_TT:
+ fprintf(f, "</tt>");
+ break;
+ case ST_UNDERLINED:
+ fprintf(f, "</ul>");
+ break;
+ default:
+ break;
+ }
+}
+
+/*
+ *
+ * This function writes the special chars. As the specials chars are
+ * represented simply in gabc, this function is very simple, but for TeX output
+ * modules, this may be.. a little more difficult.
+ *
+ */
+static void gabc_write_special_char(FILE *f, grewchar *first_char)
+{
+ fprintf(f, "<sp>");
+ gregorio_print_unistring(f, first_char);
+ fprintf(f, "</sp>");
+}
+
+/*
+ *
+ * This functions writes verbatim output... but as the previous one it is very
+ * simple.
+ *
+ */
+static void gabc_write_verb(FILE *f, grewchar *first_char)
+{
+ fprintf(f, "<v>");
+ gregorio_print_unistring(f, first_char);
+ fprintf(f, "</v>");
+}
+
+/*
+ *
+ * The function called when we will encounter a character. There may be other
+ * representations of the character (for example for Omega), so it is necessary
+ * to have such a function defined in each module.
+ *
+ */
+
+static void gabc_print_char(FILE *f, grewchar to_print)
+{
+ gregorio_print_unichar(f, to_print);
+}
+
+/*
+ *
+ * Quite important: the function that writes the liquescentia. It is called at
+ * the end of the function that writes one glyph.
+ *
+ */
+
+static void gabc_write_end_liquescentia(FILE *f, char liquescentia)
+{
+ if (liquescentia == L_NO_LIQUESCENTIA) {
+ return;
+ }
+ if (liquescentia == L_DEMINUTUS
+ || liquescentia == L_DEMINUTUS_INITIO_DEBILIS) {
+ fprintf(f, "~");
+ }
+ if (liquescentia == L_AUCTUS_ASCENDENS
+ || liquescentia == L_AUCTUS_ASCENDENS_INITIO_DEBILIS) {
+ fprintf(f, "<");
+ }
+ if (liquescentia == L_AUCTUS_DESCENDENS
+ || liquescentia == L_AUCTUS_DESCENDENS_INITIO_DEBILIS) {
+ fprintf(f, ">");
+ }
+ if (liquescentia == L_AUCTA || liquescentia == L_AUCTA_INITIO_DEBILIS) {
+ fprintf(f, "<");
+ }
+}
+
+/*
+ *
+ * The function that writes a key change... quite simple.
+ *
+ */
+
+static void gabc_write_key_change(FILE *f, char step, int line,
+ bool flatted_key)
+{
+ if (flatted_key) {
+ fprintf(f, "%cb%d", step, line);
+ } else {
+ fprintf(f, "%c%d", step, line);
+ }
+}
+
+/*
+ *
+ * The function that writes spaces, called when we encounter one.
+ *
+ */
+
+static void gabc_write_space(FILE *f, char type)
+{
+ switch (type) {
+ case SP_LARGER_SPACE:
+ fprintf(f, "//");
+ break;
+ case SP_GLYPH_SPACE:
+ fprintf(f, " ");
+ break;
+ case SP_LARGER_SPACE_NB:
+ fprintf(f, "!//");
+ break;
+ case SP_GLYPH_SPACE_NB:
+ fprintf(f, "! ");
+ break;
+ case SP_NEUMATIC_CUT_NB:
+ fprintf(f, "!/");
+ break;
+ case SP_NEUMATIC_CUT:
+ /* do not uncomment it, the code is strangely done but it works */
+ /* fprintf (f, "/"); */
+ break;
+ default:
+ gregorio_message(_("space type is unknown"), "gabc_write_space",
+ VERBOSITY_ERROR, 0);
+ break;
+ }
+}
+
+/*
+ *
+ * A function to write a bar.
+ *
+ */
+
+static void gabc_write_bar(FILE *f, char type)
+{
+ switch (type) {
+ case B_VIRGULA:
+ fprintf(f, "`");
+ break;
+ case B_DIVISIO_MINIMA:
+ fprintf(f, ",");
+ break;
+ case B_DIVISIO_MINOR:
+ fprintf(f, ";");
+ break;
+ case B_DIVISIO_MAIOR:
+ fprintf(f, ":");
+ break;
+ case B_DIVISIO_FINALIS:
+ fprintf(f, "::");
+ break;
+ case B_DIVISIO_MINOR_D1:
+ fprintf(f, ";1");
+ break;
+ case B_DIVISIO_MINOR_D2:
+ fprintf(f, ";2");
+ break;
+ case B_DIVISIO_MINOR_D3:
+ fprintf(f, ";3");
+ break;
+ case B_DIVISIO_MINOR_D4:
+ fprintf(f, ";4");
+ break;
+ case B_DIVISIO_MINOR_D5:
+ fprintf(f, ";5");
+ break;
+ case B_DIVISIO_MINOR_D6:
+ fprintf(f, ";6");
+ break;
+ default:
+ gregorio_message(_("unknown bar type, nothing will be done"),
+ "gabc_bar_to_str", VERBOSITY_ERROR, 0);
+ break;
+ }
+}
+
+/* writing the signs of a bar */
+
+static void gabc_write_bar_signs(FILE *f, char type)
+{
+ switch (type) {
+ case _V_EPISEMUS:
+ fprintf(f, "'");
+ break;
+ case _V_EPISEMUS_BAR_H_EPISEMUS:
+ fprintf(f, "'_");
+ break;
+ case _BAR_H_EPISEMUS:
+ fprintf(f, "_");
+ break;
+ default:
+ break;
+ }
+}
+
+static void gabc_hepisemus(FILE *f, const char *prefix, bool connect,
+ grehepisemus_size size)
+{
+ fprintf(f, "_%s", prefix);
+ if (!connect) {
+ fprintf(f, "2");
+ }
+ switch (size) {
+ case H_SMALL_LEFT:
+ fprintf(f, "3");
+ break;
+ case H_SMALL_CENTRE:
+ fprintf(f, "4");
+ break;
+ case H_SMALL_RIGHT:
+ fprintf(f, "5");
+ break;
+ case H_NORMAL:
+ /* nothing to print */
+ break;
+ }
+}
+
+static const char *vepisemus_position(gregorio_note *note)
+{
+ if (!note->v_episemus_height) {
+ return "";
+ }
+ if (note->v_episemus_height < note->u.note.pitch) {
+ return "0";
+ }
+ return "1";
+}
+
+static const char *mora_vposition(gregorio_note *note)
+{
+ switch (note->mora_vposition) {
+ case VPOS_AUTO:
+ return "";
+ case VPOS_ABOVE:
+ return "1";
+ case VPOS_BELOW:
+ return "0";
+ default:
+ return "";
+ }
+}
+
+/*
+ *
+ * The function that writes one gregorio_note.
+ *
+ */
+
+static void gabc_write_gregorio_note(FILE *f, gregorio_note *note,
+ char glyph_type)
+{
+ char shape;
+ if (!note) {
+ gregorio_message(_("call with NULL argument"),
+ "gabc_write_gregorio_note", VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (note->type != GRE_NOTE) {
+ gregorio_message(_("call with argument which type is not GRE_NOTE, "
+ "wrote nothing"), "gabc_write_gregorio_note",
+ VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (glyph_type == G_PES_QUADRATUM) {
+ shape = S_QUADRATUM;
+ } else {
+ shape = note->u.note.shape;
+ }
+ switch (shape) {
+ /* first we write the letters that determine the shapes */
+ case S_PUNCTUM:
+ fprintf(f, "%c", pitch_letter(note->u.note.pitch));
+ break;
+ case S_PUNCTUM_INCLINATUM:
+ fprintf(f, "%c", toupper((unsigned char)pitch_letter(note->u.note.pitch)));
+ break;
+ case S_PUNCTUM_INCLINATUM_DEMINUTUS:
+ if (note->next) {
+ fprintf(f, "%c~", toupper((unsigned char)pitch_letter(note->u.note.pitch)));
+ } else {
+ fprintf(f, "%c", toupper((unsigned char)pitch_letter(note->u.note.pitch)));
+ }
+ break;
+ case S_PUNCTUM_INCLINATUM_AUCTUS:
+ if (note->next) {
+ fprintf(f, "%c<", toupper((unsigned char)pitch_letter(note->u.note.pitch)));
+ } else {
+ fprintf(f, "%c", toupper((unsigned char)pitch_letter(note->u.note.pitch)));
+ }
+ break;
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ fprintf(f, "%cr", toupper((unsigned char)pitch_letter(note->u.note.pitch)));
+ break;
+ case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS:
+ fprintf(f, "%cr<", toupper((unsigned char)pitch_letter(note->u.note.pitch)));
+ break;
+ case S_VIRGA:
+ fprintf(f, "%cv", pitch_letter(note->u.note.pitch));
+ break;
+ case S_VIRGA_REVERSA:
+ fprintf(f, "%cV", pitch_letter(note->u.note.pitch));
+ break;
+ case S_BIVIRGA:
+ fprintf(f, "%cvv", pitch_letter(note->u.note.pitch));
+ break;
+ case S_TRIVIRGA:
+ fprintf(f, "%cvvv", pitch_letter(note->u.note.pitch));
+ break;
+ case S_ORISCUS:
+ fprintf(f, "%co", pitch_letter(note->u.note.pitch));
+ break;
+ case S_ORISCUS_AUCTUS:
+ fprintf(f, "%co", pitch_letter(note->u.note.pitch));
+ /* we consider that the AUCTUS is also in the liquescentia */
+ break;
+ case S_ORISCUS_DEMINUTUS:
+ fprintf(f, "%co", pitch_letter(note->u.note.pitch));
+ /* we consider that the AUCTUS is also in the liquescentia */
+ break;
+ case S_QUILISMA:
+ fprintf(f, "%cw", pitch_letter(note->u.note.pitch));
+ break;
+ case S_LINEA:
+ fprintf(f, "%c=", pitch_letter(note->u.note.pitch));
+ break;
+ case S_PUNCTUM_CAVUM:
+ fprintf(f, "%cr", pitch_letter(note->u.note.pitch));
+ break;
+ case S_LINEA_PUNCTUM:
+ fprintf(f, "%cR", pitch_letter(note->u.note.pitch));
+ break;
+ case S_LINEA_PUNCTUM_CAVUM:
+ fprintf(f, "%cr0", pitch_letter(note->u.note.pitch));
+ break;
+ case S_QUILISMA_QUADRATUM:
+ fprintf(f, "%cW", pitch_letter(note->u.note.pitch));
+ break;
+ case S_ORISCUS_SCAPUS:
+ fprintf(f, "%cO", pitch_letter(note->u.note.pitch));
+ break;
+ case S_STROPHA:
+ fprintf(f, "%cs", pitch_letter(note->u.note.pitch));
+ break;
+ case S_STROPHA_AUCTA:
+ fprintf(f, "%cs", pitch_letter(note->u.note.pitch));
+ break;
+ case S_DISTROPHA:
+ fprintf(f, "%css", pitch_letter(note->u.note.pitch));
+ break;
+ case S_DISTROPHA_AUCTA:
+ fprintf(f, "%css", pitch_letter(note->u.note.pitch));
+ break;
+ case S_TRISTROPHA:
+ fprintf(f, "%csss", pitch_letter(note->u.note.pitch));
+ break;
+ case S_TRISTROPHA_AUCTA:
+ fprintf(f, "%csss", pitch_letter(note->u.note.pitch));
+ break;
+ case S_QUADRATUM:
+ fprintf(f, "%cq", pitch_letter(note->u.note.pitch));
+ break;
+ default:
+ fprintf(f, "%c", pitch_letter(note->u.note.pitch));
+ break;
+ }
+ switch (note->signs) {
+ case _PUNCTUM_MORA:
+ fprintf(f, ".%s", mora_vposition(note));
+ break;
+ case _AUCTUM_DUPLEX:
+ fprintf(f, "..");
+ break;
+ case _V_EPISEMUS:
+ fprintf(f, "'%s", vepisemus_position(note));
+ break;
+ case _V_EPISEMUS_PUNCTUM_MORA:
+ fprintf(f, "'%s.%s", vepisemus_position(note), mora_vposition(note));
+ break;
+ case _V_EPISEMUS_AUCTUM_DUPLEX:
+ fprintf(f, "'%s..", vepisemus_position(note));
+ break;
+ default:
+ break;
+ }
+ switch (note->special_sign) {
+ case _ACCENTUS:
+ fprintf(f, "r1");
+ break;
+ case _ACCENTUS_REVERSUS:
+ fprintf(f, "r2");
+ break;
+ case _CIRCULUS:
+ fprintf(f, "r3");
+ break;
+ case _SEMI_CIRCULUS:
+ fprintf(f, "r4");
+ break;
+ case _SEMI_CIRCULUS_REVERSUS:
+ fprintf(f, "r5");
+ break;
+ default:
+ break;
+ }
+ if (note->h_episemus_above == HEPISEMUS_AUTO
+ && note->h_episemus_below == HEPISEMUS_AUTO) {
+ gabc_hepisemus(f, "", note->h_episemus_above_connect,
+ note->h_episemus_above_size);
+ } else {
+ if (note->h_episemus_below == HEPISEMUS_FORCED) {
+ gabc_hepisemus(f, "0", note->h_episemus_below_connect,
+ note->h_episemus_below_size);
+ }
+ if (note->h_episemus_above == HEPISEMUS_FORCED) {
+ gabc_hepisemus(f, "1", note->h_episemus_above_connect,
+ note->h_episemus_above_size);
+ }
+ }
+ if (note->texverb) {
+ fprintf(f, "[nv:%s]", note->texverb);
+ }
+}
+
+/*
+ *
+ * The function that writes one glyph. If it is really a glyph (meaning not a
+ * space or an alteration), we just do like always, a loop on the notes and a
+ * call to the function that writes one note on each of them.
+ *
+ */
+
+static void gabc_write_gregorio_glyph(FILE *f, gregorio_glyph *glyph)
+{
+
+ gregorio_note *current_note;
+
+ if (!glyph) {
+ gregorio_message(_("call with NULL argument"),
+ "gabc_write_gregorio_glyph", VERBOSITY_ERROR, 0);
+ return;
+ }
+ switch (glyph->type) {
+ case GRE_FLAT:
+ fprintf(f, "%cx", pitch_letter(glyph->u.misc.pitched.pitch));
+ break;
+ case GRE_TEXVERB_GLYPH:
+ if (glyph->texverb) {
+ fprintf(f, "[gv:%s]", glyph->texverb);
+ }
+ break;
+ case GRE_NATURAL:
+ fprintf(f, "%cy", pitch_letter(glyph->u.misc.pitched.pitch));
+ break;
+ case GRE_SHARP:
+ fprintf(f, "%c#", pitch_letter(glyph->u.misc.pitched.pitch));
+ break;
+ case GRE_SPACE:
+ if (glyph->u.misc.unpitched.info.space == SP_ZERO_WIDTH && glyph->next) {
+ fprintf(f, "!");
+ } else {
+ gregorio_message(_("bad space"), "gabc_write_gregorio_glyph",
+ VERBOSITY_ERROR, 0);
+ }
+ break;
+ case GRE_MANUAL_CUSTOS:
+ fprintf(f, "%c+", pitch_letter(glyph->u.misc.pitched.pitch));
+ break;
+ case GRE_GLYPH:
+ if (is_initio_debilis(glyph->u.notes.liquescentia)) {
+ fprintf(f, "-");
+ }
+
+ current_note = glyph->u.notes.first_note;
+ while (current_note) {
+ gabc_write_gregorio_note(f, current_note, glyph->u.notes.glyph_type);
+ /* third argument necessary for the special shape pes quadratum */
+ current_note = current_note->next;
+ }
+ gabc_write_end_liquescentia(f, glyph->u.notes.liquescentia);
+ break;
+ default:
+
+ gregorio_message(_("call with an argument which type is unknown"),
+ "gabc_write_gregorio_glyph", VERBOSITY_ERROR, 0);
+ break;
+ }
+}
+
+/*
+ *
+ * To write an element, first we check the type of the element (if it is a bar,
+ * etc.), and if it is really an element, we make a loop on the list of glyphs
+ * inside the neume, and for each of them we call the function that will write
+ * one glyph.
+ *
+ */
+
+static void gabc_write_gregorio_element(FILE *f, gregorio_element *element)
+{
+ gregorio_glyph *current_glyph;
+ if (!element) {
+ gregorio_message(_("call with NULL argument"),
+ "gabc_write_gregorio_element", VERBOSITY_ERROR, 0);
+ return;
+ }
+ current_glyph = element->u.first_glyph;
+ switch (element->type) {
+ case GRE_ELEMENT:
+ while (current_glyph) {
+ gabc_write_gregorio_glyph(f, current_glyph);
+ current_glyph = current_glyph->next;
+ }
+ break;
+ case GRE_TEXVERB_ELEMENT:
+ if (element->texverb) {
+ fprintf(f, "[ev:%s]", element->texverb);
+ }
+ break;
+ case GRE_ALT:
+ if (element->texverb) {
+ fprintf(f, "[alt:%s]", element->texverb);
+ }
+ break;
+ case GRE_SPACE:
+ gabc_write_space(f, element->u.misc.unpitched.info.space);
+ break;
+ case GRE_BAR:
+ gabc_write_bar(f, element->u.misc.unpitched.info.bar);
+ gabc_write_bar_signs(f, element->u.misc.unpitched.special_sign);
+ break;
+ case GRE_C_KEY_CHANGE:
+ gabc_write_key_change(f, C_KEY,
+ element->u.misc.pitched.pitch - '0',
+ element->u.misc.pitched.flatted_key);
+ break;
+ case GRE_F_KEY_CHANGE:
+ gabc_write_key_change(f, F_KEY,
+ element->u.misc.pitched.pitch - '0',
+ element->u.misc.pitched.flatted_key);
+ break;
+ case GRE_END_OF_LINE:
+ fprintf(f, "z");
+ break;
+ case GRE_CUSTOS:
+ if (element->u.misc.pitched.force_pitch) {
+ fprintf(f, "%c+", pitch_letter(element->u.misc.pitched.pitch));
+ } else {
+ fprintf(f, "z0");
+ }
+ break;
+ default:
+ gregorio_message(_("call with an argument which type is unknown"),
+ "gabc_write_gregorio_element", VERBOSITY_ERROR, 0);
+ break;
+ }
+}
+
+/*
+ *
+ * Here is defined the function that will write the list of gregorio_elements.
+ * It is very simple: it makes a loop in which it calls a function that writes
+ * one element.
+ *
+ */
+
+static void gabc_write_gregorio_elements(FILE *f, gregorio_element *element)
+{
+ while (element) {
+ gabc_write_gregorio_element(f, element);
+ /* we don't want a bar after an end of line */
+ if (element->type != GRE_END_OF_LINE
+ && (element->type != GRE_SPACE
+ || (element->type == GRE_SPACE
+ && element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT))
+ && element->next && element->next->type == GRE_ELEMENT) {
+ fprintf(f, "/");
+ }
+ element = element->next;
+ }
+}
+
+/*
+ *
+ * Here it goes, we are writing a gregorio_syllable.
+ *
+ */
+
+static void gabc_write_gregorio_syllable(FILE *f, gregorio_syllable *syllable,
+ int number_of_voices)
+{
+ int voice = 0;
+ if (!syllable) {
+ gregorio_message(_("call with NULL argument"), "gabc_write_syllable",
+ VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (syllable->text) {
+ /* we call the magic function (defined in struct_utils.c), that will
+ * write our text. */
+ gregorio_write_text(false, syllable->text, f,
+ (&gabc_write_verb),
+ (&gabc_print_char),
+ (&gabc_write_begin),
+ (&gabc_write_end), (&gabc_write_special_char));
+ }
+ if (syllable->translation) {
+ fprintf(f, "[");
+ gregorio_write_text(false, syllable->translation, f,
+ (&gabc_write_verb),
+ (&gabc_print_char),
+ (&gabc_write_begin),
+ (&gabc_write_end), (&gabc_write_special_char));
+ fprintf(f, "]");
+ }
+ fprintf(f, "(");
+ while (voice < number_of_voices - 1) {
+ /* we enter this loop only in polyphony */
+ gabc_write_gregorio_elements(f, syllable->elements[voice]);
+ fprintf(f, "&");
+ voice++;
+ }
+ /* we write all the elements of the syllable. */
+ gabc_write_gregorio_elements(f, syllable->elements[voice]);
+ if (syllable->position == WORD_END
+ || syllable->position == WORD_ONE_SYLLABLE
+ || gregorio_is_only_special(syllable->elements[0]))
+ /* we assume here that if the first voice is only special, all will be
+ * only specials too */
+ {
+ fprintf(f, ") ");
+ } else {
+ fprintf(f, ")");
+ }
+}
+
+/*
+ *
+ * This is the top function, the one called when we want to write a
+ * gregorio_score in gabc.
+ *
+ */
+
+void gabc_write_score(FILE *f, gregorio_score *score)
+{
+ char step;
+ int line;
+ gregorio_syllable *syllable;
+ int annotation_num;
+
+ if (!f) {
+ gregorio_message(_("call with NULL file"), "gregoriotex_write_score",
+ VERBOSITY_ERROR, 0);
+ return;
+ }
+
+ if (score->name) {
+ gabc_write_str_attribute(f, "name", score->name);
+ } else {
+ fprintf(f, "name: unknown;\n");
+ gregorio_message(_("name is mandatory"), "gabc_write_score",
+ VERBOSITY_ERROR, 0);
+ }
+ gabc_write_str_attribute(f, "gabc-copyright", score->gabc_copyright);
+ gabc_write_str_attribute(f, "score-copyright", score->score_copyright);
+ gabc_write_str_attribute(f, "office-part", score->office_part);
+ gabc_write_str_attribute(f, "occasion", score->occasion);
+ gabc_write_str_attribute(f, "meter", score->meter);
+ gabc_write_str_attribute(f, "commentary", score->commentary);
+ gabc_write_str_attribute(f, "arranger", score->arranger);
+ /* We always create gabc of the current version; this is not derived
+ * from the input. */
+ fprintf(f, "gabc-version: %s;\n", GABC_CURRENT_VERSION);
+ /* And since the gabc is generated by this program, note this. */
+ fprintf(f, "generated-by: %s %s;\n", "gregorio", GREGORIO_VERSION);
+ gabc_write_str_attribute(f, "author", score->si.author);
+ gabc_write_str_attribute(f, "date", score->si.date);
+ gabc_write_str_attribute(f, "manuscript", score->si.manuscript);
+ gabc_write_str_attribute(f, "manuscript-reference",
+ score->si.manuscript_reference);
+ gabc_write_str_attribute(f, "manuscript-storage-place",
+ score->si.manuscript_storage_place);
+ gabc_write_str_attribute(f, "book", score->si.book);
+ gabc_write_str_attribute(f, "transcriber", score->si.transcriber);
+ gabc_write_str_attribute(f, "transcription-date",
+ score->si.transcription_date);
+ gabc_write_str_attribute(f, "gregoriotex-font", score->gregoriotex_font);
+ if (score->mode) {
+ fprintf(f, "mode: %d;\n", score->mode);
+ }
+ for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) {
+ if (score->annotation[annotation_num]) {
+ fprintf(f, "annotation: %s;\n",
+ score->annotation[annotation_num]);
+ }
+ }
+ if (score->initial_style != NORMAL_INITIAL) {
+ fprintf(f, "initial-style: %d;\n", score->initial_style);
+ }
+ gabc_write_str_attribute(f, "user-notes", score->user_notes);
+ if (score->number_of_voices == 0) {
+ gregorio_message(_("gregorio_score seems to be empty"),
+ "gabc_write_score", VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (score->number_of_voices == 1) {
+ gabc_write_voice_info(f, score->first_voice_info);
+ fprintf(f, "%%%%\n");
+ } else {
+ gregorio_voice_info *voice_info = score->first_voice_info;
+ while (voice_info) {
+ gabc_write_voice_info(f, voice_info);
+ if (voice_info->next_voice_info) {
+ fprintf(f, "--\n");
+ } else {
+ fprintf(f, "%%%%\n");
+ }
+ }
+ }
+ /* at present we only allow for one clef at the start of the gabc */
+ gregorio_det_step_and_line_from_key(score->first_voice_info->initial_key,
+ &step, &line);
+ if (score->first_voice_info->flatted_key) {
+ fprintf(f, "(%cb%d)", step, line);
+ } else {
+ fprintf(f, "(%c%d)", step, line);
+ }
+ syllable = score->first_syllable;
+ /* the we write every syllable */
+ while (syllable) {
+ gabc_write_gregorio_syllable(f, syllable, score->number_of_voices);
+ syllable = syllable->next_syllable;
+ }
+ fprintf(f, "\n");
+}
+
+/* And that's it... not really hard isn't it? */
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc.h
new file mode 100644
index 00000000000..69aa7c64210
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gabc/gabc.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#ifndef GABC_H
+#define GABC_H
+
+#define GABC_CURRENT_VERSION "0.9.3"
+
+#include "struct.h"
+
+/* functions to read gabc */
+gregorio_note *gabc_det_notes_from_string(char *str, char *macros[10],
+ gregorio_scanner_location *loc);
+gregorio_element *gabc_det_elements_from_string(char *str, int *current_key,
+ char *macros[10], gregorio_scanner_location *loc);
+gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note,
+ int *current_key);
+void gabc_digest(const void *buf, size_t size);
+int gabc_score_determination_lex_destroy(void);
+int gabc_notes_determination_lex_destroy(void);
+
+/* see comments on gregorio_add_note_to_a_glyph for meaning of these
+ * variables */
+typedef enum gabc_determination {
+ DET_NO_END,
+ DET_END_OF_CURRENT,
+ DET_END_OF_PREVIOUS,
+ DET_END_OF_BOTH
+} gabc_determination;
+
+/* defines the maximal interval between two notes of the same glyph */
+#define MAX_INTERVAL 5
+
+static __inline void gabc_update_location(gregorio_scanner_location *const loc,
+ const char *const bytes, const size_t length)
+{
+ size_t i;
+
+ /* to be compatible with LilyPond, this algorithm is based on Lilypond's
+ * Source_file::get_counts */
+
+ /* possible future enhancement: make the tabstop size configurable */
+
+ loc->first_line = loc->last_line;
+ loc->first_column = loc->last_column;
+ loc->first_offset = loc->last_offset;
+
+ for (i = 0; i < length; ++i) {
+ if (bytes[i] == '\n') {
+ ++loc->last_line;
+ loc->last_column = 0;
+ loc->last_offset = 0;
+ } else if (((unsigned char)bytes[i] & 0xc0u) != 0x80u) {
+ /* if two highest bits are 1 and 0, it's a continuation byte,
+ * so count everything else, which is either a single-byte
+ * character or the first byte of a multi-byte sequence */
+
+ if (bytes[i] == '\t') {
+ loc->last_column = (loc->last_column / 8 + 1) * 8;
+ } else {
+ ++loc->last_column;
+ }
+ ++loc->last_offset;
+ }
+ }
+}
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregorio-utils.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregorio-utils.c
new file mode 100644
index 00000000000..c2a4b8b579d
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregorio-utils.c
@@ -0,0 +1,638 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#ifdef USE_KPSE
+#include <kpathsea/kpathsea.h>
+#define gregorio_basename xbasename
+#else
+#include <getopt.h>
+#include <libgen.h> /* for basename */
+#define gregorio_basename basename
+#endif
+#include <string.h> /* for strcmp */
+#include <locale.h>
+#include <limits.h>
+#include "struct.h"
+#include "plugins.h"
+#include "messages.h"
+#include "characters.h"
+#include "support.h"
+#include "gabc/gabc.h"
+#include "vowel/vowel.h"
+
+#ifndef MODULE_PATH_ENV
+#define MODULE_PATH_ENV "MODULE_PATH"
+#endif
+
+typedef enum gregorio_file_format {
+ FORMAT_UNSET = 0,
+ GABC,
+ GTEX,
+ DUMP
+} gregorio_file_format;
+
+#define GABC_STR "gabc"
+#define GTEX_STR "gtex"
+#define DUMP_STR "dump"
+
+#define DEFAULT_INPUT_FORMAT GABC
+#define DEFAULT_OUTPUT_FORMAT GTEX
+
+/* realpath is not in mingw32 */
+#ifdef _WIN32
+#ifndef PATH_MAX
+#define PATH_MAX _MAX_PATH
+#endif
+#define realpath(path,resolved_path) _fullpath(resolved_path, path, PATH_MAX)
+#endif
+
+static char *define_path(char *current_directory, char *string)
+{
+ int length;
+ char *file_name;
+ char temp_name[PATH_MAX];
+ char *base_name;
+#ifdef _WIN32
+ char *last_backslash;
+#endif
+
+ file_name = malloc(PATH_MAX * sizeof(char));
+
+ strcpy(temp_name, string);
+ base_name = strrchr(temp_name, '/');
+#ifdef _WIN32
+ last_backslash = strrchr(temp_name, '\\');
+ if (last_backslash > base_name) {
+ base_name = last_backslash;
+ }
+#endif
+ if (base_name) {
+ /* some path was supplied */
+
+ *base_name = '\0';
+ base_name++;
+
+ /* try to resolve it */
+ if (!realpath(temp_name, file_name)) {
+ fprintf(stderr, "the directory %s for %s does not exist\n",
+ file_name, base_name);
+ exit(-1);
+ }
+ } else {
+ /* no path was supplied */
+ base_name = string;
+ strcpy(file_name, current_directory);
+ }
+
+ /* make sure we're not bigger than PATH_MAX */
+ length = strlen(file_name);
+ if (length + strlen(base_name) + 1 >= PATH_MAX) {
+ fprintf(stderr, "filename too long: %s/%s\n", file_name, base_name);
+ exit(-1);
+ }
+ /* build the file name */
+ file_name[length] = '/';
+ strcpy(file_name + length + 1, base_name);
+
+ return file_name;
+}
+
+/* function that returns the filename without the extension */
+static char *get_base_filename(char *fbasename)
+{
+ char *p;
+ int l;
+ char *ret;
+ p = strrchr(fbasename, '.');
+ if (!p) {
+ return NULL;
+ }
+ l = strlen(fbasename) - strlen(p);
+ ret = (char *) malloc((l + 1) * sizeof(char));
+ gregorio_snprintf(ret, l + 1, "%s", fbasename);
+ ret[l] = '\0';
+ return ret;
+}
+
+/* function that adds the good extension to a basename (without extension) */
+static char *get_output_filename(char *fbasename, const char *extension)
+{
+ char *output_filename = NULL;
+ output_filename =
+ (char *) malloc(sizeof(char) *
+ (strlen(extension) + strlen(fbasename) + 2));
+ output_filename = strcpy(output_filename, fbasename);
+ output_filename = strcat(output_filename, ".");
+ output_filename = strcat(output_filename, extension);
+ return output_filename;
+}
+
+/*
+ * the type definitions of the function to read a score from a file, and to
+ * write a score to a file. Necessary for the libtool stuff...
+ */
+
+static void print_licence(void)
+{
+ printf("\n\
+Tools for manipulation of gregorian chant files\n\
+Copyright (C) 2006-2015 Gregorio project authors (see CONTRIBUTORS.md)\n\
+\n\
+This program is free software: you can redistribute it and/or modify\n\
+it under the terms of the GNU General Public License as published by\n\
+the Free Software Foundation, either version 3 of the License, or\n\
+(at your option) any later version.\n\
+\n");
+ printf("This program is distributed in the hope that it will be useful,\n\
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
+GNU General Public License for more details.\n\
+\n\
+You should have received a copy of the GNU General Public License\n\
+along with this program. If not, see <http://www.gnu.org/licenses/>.\n\n");
+}
+
+static void print_usage(char *name)
+{
+ printf(_("\nUsage :\n%s [OPTION] {file}\n where OPTION is :\n\
+\t-o file writes output to specified file\n\
+\t-S writes output to stdout\n\
+\t-F format specifies output file format (default: gtex)\n\
+\t-l file writes messages output to specified file (default: stderr)\n\
+\t-f format specifies input file format (default: gabc)\n\
+\t-s reads input from stdin\n\
+\t-p generate point-and-click information\n\
+\t-h displays this message\n\
+\t-V displays %s version\n"), name, name);
+ printf(_("\t-L displays licence\n\
+\t-v verbose mode\n\
+\t-W displays all warnings\n\
+\n\
+available formats are:\n\
+\t gabc gabc\n\
+\t gtex GregorioTeX\n\
+\t dump simple text dump (for debugging purpose)\n\
+\n"));
+}
+
+static void check_input_clobber(char *input_file_name, char *output_file_name)
+{
+ char *absolute_input_file_name;
+ char *absolute_output_file_name;
+ char *current_directory;
+ int file_cmp;
+ if (input_file_name && output_file_name) {
+ current_directory = malloc(PATH_MAX * sizeof(char));
+ current_directory = getcwd(current_directory, PATH_MAX);
+ if (current_directory == NULL) {
+ fprintf(stderr, _("can't determine current directory"));
+ free(current_directory);
+ exit(-1);
+ }
+ absolute_input_file_name = define_path(current_directory, input_file_name);
+ absolute_output_file_name = define_path(current_directory, output_file_name);
+ file_cmp = strcmp(absolute_input_file_name, absolute_output_file_name);
+ if (file_cmp == 0) {
+ fprintf(stderr, "error: refusing to overwrite the input file\n");
+ }
+ free(current_directory);
+ free(absolute_input_file_name);
+ free(absolute_output_file_name);
+ if (file_cmp == 0) {
+ exit(-1);
+ }
+ }
+}
+
+static char *encode_point_and_click_filename(char *input_file_name)
+{
+ /* percent-encoding favors capital hex digits */
+ static const char *const hex = "0123456789ABCDEF";
+ char filename[PATH_MAX], *result = NULL, *r = NULL, *p;
+
+ if (!realpath(input_file_name, filename)) {
+ fprintf(stderr, "error: unable to resolve %s\n", input_file_name);
+ exit(-1);
+ }
+
+ /* 2 extra characters for a possible leading slash and final NUL */
+ r = result = malloc((strlen(filename) * 4 + 2) * sizeof(char));
+
+#ifdef _WIN32
+ *(r++) = '/';
+#endif
+
+ for (p = filename; *p; ++p) {
+#ifdef _WIN32
+ if (*p == '\\') {
+ *p = '/';
+ }
+#endif
+
+ /* note that -, _ and ~ are conspicuously missing from this list
+ * because they cause trouble in TeX; we will percent-encode them */
+ if ((*p >= 'A' && *p <= 'Z') || (*p >= 'a' && *p < 'z')
+ || (*p >= '0' && *p <= '9') || *p == '.' || *p == '/'
+#ifdef _WIN32
+ || *p == ':'
+#endif
+ ) {
+ *(r++) = *p;
+ }
+ else {
+ /* percent-encode anything else */
+ *(r++) = '\\'; /* must escape it because it's TeX */
+ *(r++) = '%';
+ *(r++) = hex[(*p >> 4) & 0x0FU];
+ *(r++) = hex[*p & 0x0FU];
+ }
+ }
+
+ *r = '\0';
+
+ return result;
+}
+
+int main(int argc, char **argv)
+{
+ const char *copyright =
+ "Copyright (C) 2006-2015 Gregorio project authors (see CONTRIBUTORS.md)";
+ int c;
+
+ char *input_file_name = NULL;
+ char *output_file_name = NULL;
+ char *output_basename = NULL;
+ char *error_file_name = NULL;
+ FILE *input_file = NULL;
+ FILE *output_file = NULL;
+ FILE *error_file = NULL;
+ gregorio_file_format input_format = FORMAT_UNSET;
+ gregorio_file_format output_format = FORMAT_UNSET;
+ gregorio_verbosity verb_mode = 0;
+ bool point_and_click = false;
+ char *point_and_click_filename = NULL;
+ int number_of_options = 0;
+ int option_index = 0;
+ static struct option long_options[] = {
+ {"output-file", 1, 0, 'o'},
+ {"stdout", 0, 0, 'S'},
+ {"output-format", 1, 0, 'F'},
+ {"messages-file", 1, 0, 'l'},
+ {"input-format", 1, 0, 'f'},
+ {"stdin", 0, 0, 's'},
+ {"help", 0, 0, 'h'},
+ {"version", 0, 0, 'V'},
+ {"licence", 0, 0, 'L'},
+ {"verbose", 0, 0, 'v'},
+ {"all-warnings", 0, 0, 'W'},
+ {"point-and-click", 0, 0, 'p'},
+ };
+ gregorio_score *score = NULL;
+
+ #ifdef USE_KPSE
+ kpse_set_program_name("gregorio", "gregorio");
+ #endif
+ if (argc == 1) {
+ print_usage(argv[0]);
+ exit(0);
+ }
+ setlocale(LC_CTYPE, "C");
+
+ while (1) {
+ c = getopt_long(argc, argv, "o:SF:l:f:shOLVvWp",
+ long_options, &option_index);
+ if (c == -1)
+ break;
+ switch (c) {
+ case 'o':
+ if (output_file_name) {
+ fprintf(stderr,
+ "warning: several output files declared, %s taken\n",
+ output_file_name);
+ break;
+ }
+ if (output_file) { /* means that stdout is defined */
+ fprintf(stderr,
+ "warning: can't write to file and stdout, writing on stdout\n");
+ break;
+ }
+ output_file_name = optarg;
+ break;
+ case 'S':
+ if (output_file_name) {
+ fprintf(stderr,
+ "warning: can't write to file and stdout, writing on %s\n",
+ output_file_name);
+ break;
+ }
+ if (output_file) { /* means that stdout is defined */
+ fprintf(stderr, "warning: option used two times: %c\n", c);
+ break;
+ }
+ output_file = stdout;
+ break;
+ case 'F':
+ if (output_format) {
+ fprintf(stderr,
+ "warning: several output formats declared, first taken\n");
+ break;
+ }
+ if (!strcmp(optarg, GABC_STR)) {
+ output_format = GABC;
+ break;
+ }
+ if (!strcmp(optarg, GTEX_STR)) {
+ output_format = GTEX;
+ break;
+ }
+ if (!strcmp(optarg, DUMP_STR)) {
+ output_format = DUMP;
+ break;
+ } else {
+ fprintf(stderr, "error: unknown output format: %s\n", optarg);
+ exit(0);
+ }
+ break;
+ case 'l':
+ if (error_file_name) {
+ fprintf(stderr,
+ "warning: several error files declared, %s taken\n",
+ error_file_name);
+ break;
+ }
+ error_file_name = optarg;
+ break;
+ case 'f':
+ if (input_format) {
+ gregorio_set_error_out(error_file);
+ fprintf(stderr,
+ "warning: several output formats declared, first taken\n");
+ break;
+ }
+ if (!strcmp(optarg, GABC_STR)) {
+ input_format = GABC;
+ break;
+ } else {
+ fprintf(stderr, "error: unknown input format: %s\n", optarg);
+ exit(0);
+ }
+ break;
+ case 's':
+ if (input_file_name) {
+ fprintf(stderr,
+ "warning: can't read from file and stdin, writing on %s\n",
+ input_file_name);
+ break;
+ }
+ if (input_file) { /* means that stdin is defined */
+ fprintf(stderr, "warning: option used two times: %c\n", c);
+ break;
+ }
+ input_file = stdin;
+ break;
+ case 'h':
+ print_usage(argv[0]);
+ exit(0);
+ break;
+ case 'V':
+ printf("Gregorio version %s.\n%s\n", GREGORIO_VERSION, copyright);
+ exit(0);
+ break;
+ case 'v':
+ if (verb_mode && verb_mode != VERBOSITY_WARNING) {
+ fprintf(stderr, "warning: verbose option passed two times\n");
+ break;
+ }
+ verb_mode = VERBOSITY_INFO;
+ break;
+ case 'W':
+ if (verb_mode == VERBOSITY_WARNING) {
+ fprintf(stderr,
+ "warning: all-warnings option passed two times\n");
+ break;
+ }
+ if (verb_mode != VERBOSITY_INFO) {
+ verb_mode = VERBOSITY_WARNING;
+ }
+ break;
+ case 'L':
+ print_licence();
+ exit(0);
+ break;
+ case 'p':
+ if (point_and_click) {
+ fprintf(stderr,
+ "warning: point-and-click option passed two times\n");
+ break;
+ }
+ point_and_click = true;
+ break;
+ case '?':
+ break;
+ default:
+ fprintf(stderr, "unknown option: %c\n", c);
+ print_usage(argv[0]);
+ exit(0);
+ break;
+ }
+ number_of_options++;
+ } /* end of while */
+ if (optind == argc) {
+ if (!input_file) { /* input not undefined (could be stdin) */
+ fprintf(stderr, "error: no input file specified\n");
+ print_usage(argv[0]);
+ exit(-1);
+ }
+ } else {
+ input_file_name = argv[optind];
+ output_basename = get_base_filename(input_file_name);
+ if (input_file) {
+ fprintf(stderr,
+ "warning: can't read from stdin and a file, reading from file %s\n",
+ input_file_name);
+ input_file = NULL;
+ }
+ }
+ optind++;
+ if (optind < argc) {
+ printf("ignored arguments: ");
+ while (number_of_options < argc)
+ printf("%s ", argv[number_of_options++]);
+ printf("\n");
+ }
+
+ if (!input_format) {
+ input_format = DEFAULT_INPUT_FORMAT;
+ }
+
+ if (!output_format) {
+ output_format = DEFAULT_OUTPUT_FORMAT;
+ }
+
+ #ifdef USE_KPSE
+ if (!kpse_in_name_ok(input_file_name)) {
+ fprintf(stderr, "Error: kpse doesn't allow to read from file %s\n",
+ input_file_name);
+ exit(-1);
+ }
+ #endif
+
+ /* then we act... */
+
+ if (!output_file_name && !output_file) {
+ if (!output_basename) {
+ output_file = stdout;
+ } else {
+ if (input_format != output_format) {
+ switch (output_format) {
+ case GABC:
+ output_file_name =
+ get_output_filename(output_basename, "gabc");
+ break;
+ case GTEX:
+ output_file_name =
+ get_output_filename(output_basename, "gtex");
+ break;
+ case DUMP:
+ output_file_name =
+ get_output_filename(output_basename, "dump");
+ break;
+ default:
+ fprintf(stderr, "error: unsupported format");
+ exit(-1);
+ }
+ }
+ }
+ }
+ if (output_basename) {
+ free(output_basename);
+ }
+
+ if (!output_file) {
+ if (!input_file) {
+ check_input_clobber(input_file_name, output_file_name);
+ }
+ #ifdef USE_KPSE
+ if (!kpse_out_name_ok(output_file_name)) {
+ fprintf(stderr, "Error: kpse doesn't allow to write in file %s\n",
+ output_file_name);
+ exit(-1);
+ }
+ #endif
+ output_file = fopen(output_file_name, "wb");
+ if (!output_file) {
+ fprintf(stderr, "error: can't write in file %s",
+ output_file_name);
+ }
+ }
+
+ /* we always have input_file or input_file_name */
+ if (input_file) {
+ if (point_and_click) {
+ fprintf(stderr,
+ "warning: disabling point-and-click since reading from stdin\n");
+ point_and_click = false;
+ }
+ } else {
+ input_file = fopen(input_file_name, "r");
+ if (!input_file) {
+ fprintf(stderr, "error: can't open file %s for reading\n",
+ input_file_name);
+ exit(-1);
+ }
+ gregorio_set_file_name(gregorio_basename(input_file_name));
+ if (point_and_click) {
+ point_and_click_filename = encode_point_and_click_filename(
+ input_file_name);
+ }
+ }
+
+ if (!error_file_name) {
+ error_file = stderr;
+ gregorio_set_error_out(error_file);
+ } else {
+ error_file = fopen(error_file_name, "wb");
+ if (!error_file) {
+ fprintf(stderr, "error: can't open file %s for writing\n",
+ error_file_name);
+ exit(-1);
+ }
+ gregorio_set_error_out(error_file);
+ }
+
+ if (!verb_mode) {
+ verb_mode = VERBOSITY_DEPRECATION;
+ }
+
+ gregorio_set_verbosity_mode(verb_mode);
+
+ switch (input_format) {
+ case GABC:
+ score = gabc_read_score(input_file);
+ break;
+ default:
+ fprintf(stderr, "error : invalid input format\n");
+ fclose(input_file);
+ fclose(output_file);
+ exit(-1);
+ break;
+ }
+
+ fclose(input_file);
+ if (score == NULL) {
+ fclose(output_file);
+ fprintf(stderr, "error in file parsing\n");
+ exit(-1);
+ }
+
+ gregorio_fix_initial_keys(score, DEFAULT_KEY);
+
+ switch (output_format) {
+ case GABC:
+ gabc_write_score(output_file, score);
+ break;
+ case GTEX:
+ gregoriotex_write_score(output_file, score, point_and_click_filename);
+ break;
+ case DUMP:
+ dump_write_score(output_file, score);
+ break;
+ default:
+ fprintf(stderr, "error : invalid output format\n");
+ gregorio_free_score(score);
+ fclose(output_file);
+ exit(-1);
+ break;
+ }
+ fclose(output_file);
+ if (point_and_click_filename) {
+ free(point_and_click_filename);
+ }
+ gregorio_free_score(score);
+ gregorio_vowel_tables_free();
+ gabc_score_determination_lex_destroy();
+ gabc_notes_determination_lex_destroy();
+ gregorio_vowel_rulefile_lex_destroy();
+
+ exit(gregorio_get_return_value());
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-position.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-position.c
new file mode 100644
index 00000000000..a3c58bcfc5c
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-position.c
@@ -0,0 +1,1243 @@
+/*
+ * Copyright (C) 2008-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>. */
+
+#include "config.h"
+#include <stdlib.h>
+#include <assert.h>
+#include "bool.h"
+#include "struct.h"
+
+#include "gregoriotex.h"
+
+/* TODO: The numbers in the comments are a vestige of the older code; I'm
+ * leaving them here for now, in case the refactor missed an instance
+ * somewhere, but the numbers should evenually be removed */
+
+/* (loose) naming convention, employing camel case to be TeX-csname-compliant:
+ * {specific-glyph-shape}{note-position}{note-shape}{first-ambitus}{second-ambitus}
+ */
+OFFSET_CASE(FinalPunctum);
+OFFSET_CASE(FinalDeminutus);
+OFFSET_CASE(PenultBeforePunctumWide);
+OFFSET_CASE(PenultBeforeDeminutus);
+OFFSET_CASE(AntepenultBeforePunctum);
+OFFSET_CASE(AntepenultBeforeDeminutus);
+OFFSET_CASE(InitialPunctum);
+OFFSET_CASE(InitioDebilis);
+OFFSET_CASE(PorrNonAuctusInitialWide);
+OFFSET_CASE(PorrNonAuctusInitialOne);
+OFFSET_CASE(PorrAuctusInitialAny);
+OFFSET_CASE(FinalInclinatum);
+OFFSET_CASE(FinalInclinatumDeminutus);
+OFFSET_CASE(FinalStropha);
+OFFSET_CASE(FinalQuilisma);
+OFFSET_CASE(FinalOriscus);
+OFFSET_CASE(PenultBeforePunctumOne);
+OFFSET_CASE(FinalUpperPunctum);
+OFFSET_CASE(InitialOriscus);
+OFFSET_CASE(InitialQuilisma);
+OFFSET_CASE(TorcResNonAuctusSecondWideWide);
+OFFSET_CASE(TorcResNonAuctusSecondOneWide);
+OFFSET_CASE(TorcResDebilisNonAuctusSecondAnyWide);
+OFFSET_CASE(FinalLineaPunctum);
+OFFSET_CASE(TorcResQuilismaNonAuctusSecondWideWide);
+OFFSET_CASE(TorcResOriscusNonAuctusSecondWideWide);
+OFFSET_CASE(TorcResQuilismaNonAuctusSecondOneWide);
+OFFSET_CASE(TorcResOriscusNonAuctusSecondOneWide);
+OFFSET_CASE(TorcResNonAuctusSecondWideOne);
+OFFSET_CASE(TorcResDebilisNonAuctusSecondAnyOne);
+OFFSET_CASE(TorcResQuilismaNonAuctusSecondWideOne);
+OFFSET_CASE(TorcResOriscusNonAuctusSecondWideOne);
+OFFSET_CASE(TorcResNonAuctusSecondOneOne);
+OFFSET_CASE(TorcResQuilismaNonAuctusSecondOneOne);
+OFFSET_CASE(TorcResOriscusNonAuctusSecondOneOne);
+OFFSET_CASE(TorcResAuctusSecondWideAny);
+OFFSET_CASE(TorcResDebilisAuctusSecondAnyAny);
+OFFSET_CASE(TorcResQuilismaAuctusSecondWideAny);
+OFFSET_CASE(TorcResOriscusAuctusSecondWideAny);
+OFFSET_CASE(TorcResAuctusSecondOneAny);
+OFFSET_CASE(TorcResQuilismaAuctusSecondOneAny);
+OFFSET_CASE(TorcResOriscusAuctusSecondOneAny);
+OFFSET_CASE(ConnectedPenultBeforePunctumWide);
+OFFSET_CASE(ConnectedPenultBeforePunctumOne);
+OFFSET_CASE(InitialConnectedPunctum);
+OFFSET_CASE(InitialConnectedVirga);
+OFFSET_CASE(InitialConnectedQuilisma);
+OFFSET_CASE(InitialConnectedOriscus);
+OFFSET_CASE(FinalConnectedPunctum);
+OFFSET_CASE(FinalConnectedAuctus);
+OFFSET_CASE(FinalVirgaAuctus);
+OFFSET_CASE(FinalConnectedVirga);
+OFFSET_CASE(InitialVirga);
+OFFSET_CASE(SalicusOriscusWide);
+OFFSET_CASE(SalicusOriscusOne);
+
+static __inline const char *note_before_last_note_case(
+ const gregorio_glyph *const current_glyph,
+ const gregorio_note *const current_note)
+{
+ if ((current_glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS
+ || current_glyph->u.notes.liquescentia == L_DEMINUTUS)
+ && current_note->next) {
+ return PenultBeforeDeminutus;
+ } else {
+ if ((current_note->u.note.pitch - current_note->next->u.note.pitch) == 1
+ || (current_note->u.note.pitch -
+ current_note->next->u.note.pitch) == -1) {
+ if (!current_note->previous || current_note->u.note.pitch -
+ current_note->previous->u.note.pitch > 1) {
+ return ConnectedPenultBeforePunctumOne;
+ } else {
+ return PenultBeforePunctumOne;
+ }
+ } else {
+ if (!current_note->previous || current_note->u.note.pitch -
+ current_note->previous->u.note.pitch > 1) {
+ return ConnectedPenultBeforePunctumWide;
+ } else {
+ return PenultBeforePunctumWide;
+ }
+ }
+ }
+}
+
+/* num can be FinalPunctum or FinalUpperPunctum according if the last note is a
+ * standard punctum or a smaller punctum (for pes, porrectus and torculus
+ * resupinus */
+static __inline const char *last_note_case(
+ const gregorio_glyph *const current_glyph, const char* offset_pos,
+ gregorio_note *current_note, bool no_ambitus_one)
+{
+ if (current_glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ /*
+ * may seem strange, but it is unlogical to typeset a small horizontal
+ * episemus at the end of a flexus deminutus
+ */
+ return FinalDeminutus;
+ }
+ if (!current_note->previous
+ || (!no_ambitus_one && (offset_pos == FinalUpperPunctum
+ || current_note->previous->u.note.pitch -
+ current_note->u.note.pitch == 1 ||
+ current_note->u.note.pitch - current_note->previous->u.note.pitch
+ == 1))) {
+ return offset_pos;
+ }
+ if (current_note->previous->u.note.pitch < current_note->u.note.pitch) {
+ if (current_glyph->u.notes.liquescentia &
+ (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) {
+ return FinalConnectedAuctus;
+ } else {
+ return FinalConnectedVirga;
+ }
+ } else {
+ return FinalConnectedPunctum;
+ }
+}
+
+static __inline const char *first_note_case(
+ const gregorio_note *const current_note,
+ const gregorio_glyph *const current_glyph)
+{
+ bool ambitus_one = true;
+ if (current_glyph->u.notes.liquescentia >= L_INITIO_DEBILIS) {
+ return InitioDebilis;
+ } else {
+ if (current_note->next && current_note->next->u.note.pitch -
+ current_note->u.note.pitch != 1 &&
+ current_note->u.note.pitch - current_note->next->u.note.pitch
+ != 1) {
+ ambitus_one = false;
+ }
+ if (current_note->u.note.shape == S_ORISCUS) {
+ return ambitus_one ? InitialOriscus : InitialConnectedOriscus;
+ }
+ if (current_note->u.note.shape == S_QUILISMA) {
+ return ambitus_one ? InitialQuilisma : InitialConnectedQuilisma;
+ }
+ if (ambitus_one) {
+ return InitialPunctum;
+ }
+ if (current_note->u.note.shape > current_note->next->u.note.shape) {
+ return InitialConnectedVirga;
+ } else {
+ return InitialConnectedPunctum;
+ }
+ }
+}
+
+static __inline gregorio_vposition above_if_auctus(
+ const gregorio_glyph *const glyph)
+{
+ if (glyph->u.notes.liquescentia &
+ (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) {
+ return VPOS_ABOVE;
+ }
+ return VPOS_BELOW;
+}
+
+static __inline gregorio_vposition below_if_auctus(
+ const gregorio_glyph *const glyph)
+{
+ if (glyph->u.notes.liquescentia &
+ (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) {
+ return VPOS_BELOW;
+ }
+ return VPOS_ABOVE;
+}
+
+static __inline gregorio_vposition above_if_h_episemus(
+ const gregorio_note *const note)
+{
+ if (note && note->h_episemus_above) {
+ return VPOS_ABOVE;
+ }
+ return VPOS_BELOW;
+}
+
+static __inline gregorio_vposition above_if_either_h_episemus(
+ const gregorio_note *const note)
+{
+ if ((note->previous && note->previous->h_episemus_above)
+ || (note->next && note->next->h_episemus_above)) {
+ return VPOS_ABOVE;
+ }
+ return VPOS_BELOW;
+}
+
+static __inline gregorio_vposition below_if_next_ambitus_allows(
+ const gregorio_note *const note)
+{
+ assert(note->next);
+
+ if (!note->next || note->u.note.pitch - note->next->u.note.pitch > 2) {
+ return VPOS_BELOW;
+ }
+ return VPOS_ABOVE;
+}
+
+static __inline void low_high_set_lower(const gregorio_glyph *const glyph,
+ gregorio_note *const note)
+{
+ if ((glyph->u.notes.liquescentia & L_DEMINUTUS) ||
+ !(glyph->u.notes.liquescentia
+ & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA))) {
+ note->is_lower_note = true;
+ }
+}
+
+static __inline void low_high_set_upper(const gregorio_glyph *const glyph,
+ gregorio_note *const note)
+{
+ if ((glyph->u.notes.liquescentia & L_DEMINUTUS) ||
+ !(glyph->u.notes.liquescentia
+ & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA))) {
+ note->is_upper_note = true;
+ }
+}
+
+static __inline void high_low_set_upper(const gregorio_glyph *const glyph,
+ gregorio_note *const note)
+{
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ note->is_upper_note = true;
+ }
+}
+
+static __inline void high_low_set_lower(const gregorio_glyph *const glyph,
+ gregorio_note *const note)
+{
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ note->is_lower_note = true;
+ }
+}
+
+/* a function that finds the good sign (additional line, vepisemus or
+ * hepisemus) number, according to the gregoriotex convention (described in
+ * gregoriotex.tex)
+ * this function is REALLY a pain in the ass, but it is sadly necessary */
+/*
+ *
+ * For the first note of a porrectus (flexus), this table summarizes the sign
+ * number (amb2 is the ambitus after the diagonal stroke):
+ *
+ * Porrectus | Porrectus | Porrectus | Porrectus
+ * non-auctus | non-auctus | auctus | Flexus
+ * amb2=1 | amb2>1 | |
+ * =================|=================|==============|==============
+ * PorrNonAuctus | PorrNonAuctus | PorrAuctus | PorrAuctus
+ * ~InitialOne | ~InitialWide | ~InitialAny | ~InitialAny
+ *
+ * For the second note of a torculus resupinus (flexus), this table summarizes
+ * the number (amb1 is the ambitus before the diagonal stroke and amb2 is the
+ * ambitus after the diagonal stroke):
+ *
+ * | | Torculus | Torculus | Torculus | Torculus
+ * | | Resupinus | Resupinus | Resupinus | Resupinus
+ * | Initial | non-auctus | non-auctus | auctus | Flexus
+ * amb1 | Note | amb2=1 | amb2>1 | |
+ * ======|============|=============|=============|============|============
+ * 1 | Punctum | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~OneOne | ~OneWide | ~OneAny | ~OneAny
+ * ------+------------+-------------+-------------+------------+------------
+ * 1 | I. Debilis | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~Debilis | ~Debilis | ~Debilis | ~Debilis
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~AnyOne | ~AnyWide | ~AnyAny | ~AnyAny
+ * ------+------------+-------------+-------------+------------+------------
+ * 1 | Quilisma | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~Quilisma | ~Quilisma | ~Quilisma | ~Quilisma
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~OneOne | ~OneWide | ~OneAny | ~OneAny
+ * ------+------------+-------------+-------------+------------+------------
+ * 1 | Oriscus | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~Oriscus | ~Oriscus | ~Oriscus | ~Oriscus
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~OneOne | ~OneWide | ~OneAny | ~OneAny
+ * ======|============|=============|=============|============|============
+ * >1 | Punctum | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~WideOne | ~WideWide | ~WideAny | ~WideAny
+ * ------+------------+-------------+-------------+------------+------------
+ * >1 | I. Debilis | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~Debilis | ~Debilis | ~Debilis | ~Debilis
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~AnyOne | ~AnyWide | ~AnyAny | ~AnyAny
+ * ------+------------+-------------+-------------+------------+------------
+ * >1 | Quilisma | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~Quilisma | ~Quilisma | ~Quilisma | ~Quilisma
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~WideOne | ~WideWide | ~WideAny | ~WideAny
+ * ------+------------+-------------+-------------+------------+------------
+ * >1 | Oriscus | TorcRes | TorcRes | TorcRes | TorcRes
+ * | | ~Oriscus | ~Oriscus | ~Oriscus | ~Oriscus
+ * | | ~NonAuctus | ~NonAuctus | ~Auctus | ~Auctus
+ * | | ~Second | ~Second | ~Second | ~Second
+ * | | ~WideOne | ~WideWide | ~WideAny | ~WideAny
+ *
+ */
+static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph,
+ gregorio_note *const note, int i, const gtex_type type)
+{
+ gregorio_vposition h_episemus = VPOS_AUTO, v_episemus = VPOS_AUTO;
+ bool v_episemus_below_is_lower = false, done;
+
+ /* no need to clear is_lower_note/is_upper_note because we used calloc */
+
+ switch (type) {
+ case T_PES:
+ case T_PESQUILISMA:
+ /*
+ * in the case of a pes, we put the episemus just under the bottom note
+ */
+ if (i == 1) {
+ if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) {
+ note->gtex_offset_case = InitioDebilis;
+ h_episemus = above_if_h_episemus(note->next);
+ } else {
+ note->is_lower_note = true;
+ if (note->u.note.shape == S_QUILISMA) {
+ note->gtex_offset_case = FinalQuilisma;
+ } else {
+ note->gtex_offset_case = FinalPunctum;
+ }
+ h_episemus = above_if_auctus(glyph);
+ }
+ v_episemus = VPOS_BELOW;
+ } else { /* i=2 */
+ if (!(glyph->u.notes.liquescentia & L_INITIO_DEBILIS)) {
+ note->is_upper_note = true;
+ }
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ note->gtex_offset_case = FinalDeminutus;
+ } else {
+ note->gtex_offset_case = FinalUpperPunctum;
+ }
+ h_episemus = VPOS_ABOVE;
+ v_episemus = below_if_auctus(glyph);
+ }
+ break;
+ case T_PESQUADRATUM:
+ case T_PESQUASSUS:
+ case T_PESQUILISMAQUADRATUM:
+ if (i == 1) {
+ note->gtex_offset_case = first_note_case(note, glyph);
+ h_episemus = above_if_h_episemus(note->next);
+ v_episemus = VPOS_BELOW;
+ } else { /* i=2 */
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ note->gtex_offset_case = InitioDebilis;
+ } else {
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum,
+ note, true);
+ }
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ }
+ break;
+ case T_FLEXUS:
+ case T_FLEXUS_LONGQUEUE:
+ case T_FLEXUS_ORISCUS:
+ if (i == 1) {
+ high_low_set_upper(glyph, note);
+ if (type == T_FLEXUS_ORISCUS) {
+ note->gtex_offset_case = InitialConnectedOriscus;
+ } else {
+ if (note->next && note->u.note.pitch -
+ note->next->u.note.pitch == 1) {
+ note->gtex_offset_case = InitialVirga;
+ } else {
+ note->gtex_offset_case = InitialConnectedVirga;
+ }
+ }
+ h_episemus = VPOS_ABOVE;
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ v_episemus = below_if_next_ambitus_allows(note);
+ } else {
+ v_episemus = VPOS_BELOW;
+ }
+ } else { /* i=2 */
+ high_low_set_lower(glyph, note);
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note,
+ false);
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ h_episemus = VPOS_BELOW;
+ } else {
+ h_episemus = above_if_h_episemus(note->previous);
+ }
+ v_episemus = VPOS_BELOW;
+ }
+ break;
+ case T_TORCULUS_RESUPINUS_FLEXUS:
+ done = true;
+ switch (i) {
+ case 1:
+ note->gtex_offset_case = first_note_case(note, glyph);
+ h_episemus = above_if_h_episemus(note->next);
+ v_episemus = VPOS_BELOW;
+ break;
+ case HEPISEMUS_FIRST_TWO:
+ case 2:
+ if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) {
+ note->gtex_offset_case = TorcResDebilisAuctusSecondAnyAny;
+ } else {
+ if (note->u.note.pitch - note->previous->u.note.pitch == 1) {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaAuctusSecondOneAny;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusAuctusSecondOneAny;
+ break;
+ default:
+ note->gtex_offset_case = TorcResAuctusSecondOneAny;
+ break;
+ }
+ } else {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaAuctusSecondWideAny;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusAuctusSecondWideAny;
+ break;
+ default:
+ note->gtex_offset_case = TorcResAuctusSecondWideAny;
+ break;
+ }
+ }
+ }
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ v_episemus_below_is_lower = true;
+ break;
+ default:
+ --i;
+ done = false;
+ break;
+ }
+
+ if (done) {
+ break;
+ }
+ /* else fallthrough to the next case! */
+ case T_PORRECTUS_FLEXUS:
+ switch (i) {
+ case HEPISEMUS_FIRST_TWO:
+ case 1:
+ note->gtex_offset_case = PorrAuctusInitialAny;
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ v_episemus_below_is_lower = true;
+ break;
+ case 2:
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ note->gtex_offset_case = AntepenultBeforeDeminutus;
+ } else {
+ note->gtex_offset_case = AntepenultBeforePunctum;
+ }
+ h_episemus = above_if_either_h_episemus(note);
+ v_episemus = VPOS_BELOW;
+ break;
+ case 3:
+ high_low_set_upper(glyph, note);
+ h_episemus = VPOS_ABOVE;
+ if ((glyph->u.notes.liquescentia & L_DEMINUTUS) && note->next) {
+ v_episemus = below_if_next_ambitus_allows(note);
+ note->gtex_offset_case = PenultBeforeDeminutus;
+ } else {
+ v_episemus = VPOS_BELOW;
+ note->gtex_offset_case = note_before_last_note_case(glyph,
+ note);
+ }
+ break;
+ default:
+ high_low_set_lower(glyph, note);
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note,
+ false);
+ h_episemus = above_if_h_episemus(note->previous);
+ v_episemus = VPOS_BELOW;
+ break;
+ }
+ break;
+ case T_TORCULUS_RESUPINUS:
+ done = true;
+ switch (i) {
+ case 1:
+ note->gtex_offset_case = first_note_case(note, glyph);
+ h_episemus = above_if_h_episemus(note->next);
+ v_episemus = VPOS_BELOW;
+ break;
+ case HEPISEMUS_FIRST_TWO:
+ case 2:
+ if (glyph->u.notes.liquescentia &
+ (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) {
+ /* auctus */
+ if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) {
+ note->gtex_offset_case = TorcResDebilisAuctusSecondAnyAny;
+ } else {
+ if (note->u.note.pitch -
+ note->previous->u.note.pitch == 1) {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaAuctusSecondOneAny;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusAuctusSecondOneAny;
+ break;
+ default:
+ note->gtex_offset_case = TorcResAuctusSecondOneAny;
+ break;
+ }
+ } else {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaAuctusSecondWideAny;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusAuctusSecondWideAny;
+ break;
+ default:
+ note->gtex_offset_case = TorcResAuctusSecondWideAny;
+ break;
+ }
+ }
+ }
+ } else if (note->next->next->u.note.pitch -
+ note->next->u.note.pitch == 1) {
+ /* non-auctus with a second ambitus of 1 */
+ if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) {
+ note->gtex_offset_case =
+ TorcResDebilisNonAuctusSecondAnyOne;
+ } else {
+ if (note->u.note.pitch -
+ note->previous->u.note.pitch == 1) {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaNonAuctusSecondOneOne;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusNonAuctusSecondOneOne;
+ break;
+ default:
+ note->gtex_offset_case =
+ TorcResNonAuctusSecondOneOne;
+ break;
+ }
+ } else {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaNonAuctusSecondWideOne;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusNonAuctusSecondWideOne;
+ break;
+ default:
+ note->gtex_offset_case =
+ TorcResNonAuctusSecondWideOne;
+ break;
+ }
+ }
+ }
+ } else {
+ /* non-auctus with a second ambitus of at least 2 */
+ if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) {
+ note->gtex_offset_case =
+ TorcResDebilisNonAuctusSecondAnyWide;
+ } else {
+ if (note->u.note.pitch -
+ note->previous->u.note.pitch == 1) {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaNonAuctusSecondOneWide;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusNonAuctusSecondOneWide;
+ break;
+ default:
+ note->gtex_offset_case =
+ TorcResNonAuctusSecondOneWide;
+ break;
+ }
+ } else {
+ switch (note->previous->u.note.shape) {
+ case S_QUILISMA:
+ note->gtex_offset_case =
+ TorcResQuilismaNonAuctusSecondWideWide;
+ break;
+ case S_ORISCUS:
+ note->gtex_offset_case =
+ TorcResOriscusNonAuctusSecondWideWide;
+ break;
+ default:
+ note->gtex_offset_case =
+ TorcResNonAuctusSecondWideWide;
+ break;
+ }
+ }
+ }
+ }
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ v_episemus_below_is_lower = true;
+ break;
+ default:
+ --i;
+ done = false;
+ break;
+ }
+
+ if (done) {
+ break;
+ }
+ /* else fallthrough to the next case! */
+ case T_PORRECTUS:
+ switch (i) {
+ case HEPISEMUS_FIRST_TWO:
+ case 1:
+ if (glyph->u.notes.liquescentia &
+ (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) {
+ /* auctus */
+ note->gtex_offset_case = PorrAuctusInitialAny;
+ } else if (note->next->next->u.note.pitch -
+ note->next->u.note.pitch == 1) {
+ /* non-auctus with a second ambitus of 1 */
+ note->gtex_offset_case = PorrNonAuctusInitialOne;
+ } else {
+ /* non-auctus with a second ambitus of at least 2 */
+ note->gtex_offset_case = PorrNonAuctusInitialWide;
+ }
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ v_episemus_below_is_lower = true;
+ break;
+ case 2:
+ low_high_set_lower(glyph, note);
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ note->gtex_offset_case = PenultBeforeDeminutus;
+ } else if (glyph->u.notes.liquescentia
+ & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA)) {
+ note->gtex_offset_case = PenultBeforePunctumWide;
+ } else {
+ note->gtex_offset_case = FinalPunctum;
+ }
+ h_episemus = above_if_h_episemus(note->previous);
+ v_episemus = VPOS_BELOW;
+ break;
+ default: /* case 3 */
+ low_high_set_upper(glyph, note);
+ note->gtex_offset_case = last_note_case(glyph, FinalUpperPunctum,
+ note, true);
+ h_episemus = VPOS_ABOVE;
+ v_episemus = below_if_auctus(glyph);
+ break;
+ }
+ break;
+ case T_SCANDICUS:
+ switch (i) {
+ case 1:
+ note->gtex_offset_case = first_note_case(note, glyph);
+ h_episemus = VPOS_BELOW;
+ v_episemus = VPOS_BELOW;
+ break;
+ case 2:
+ low_high_set_lower(glyph, note);
+ if (note->u.note.pitch - note->previous->u.note.pitch == 1) {
+ note->gtex_offset_case = FinalPunctum;
+ } else {
+ note->gtex_offset_case = FinalConnectedPunctum;
+ }
+ h_episemus = VPOS_BELOW;
+ v_episemus = VPOS_BELOW;
+ break;
+ default:
+ low_high_set_upper(glyph, note);
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note,
+ true);
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ break;
+ }
+ break;
+ case T_SALICUS:
+ case T_SALICUS_LONGQUEUE:
+ v_episemus = VPOS_BELOW;
+ switch (i) {
+ case 1:
+ note->gtex_offset_case = InitialConnectedPunctum;
+ h_episemus = above_if_h_episemus(note->next);
+ break;
+ case 2:
+ if (note->next->u.note.pitch - note->u.note.pitch == 1) {
+ note->gtex_offset_case = SalicusOriscusOne;
+ } else {
+ note->gtex_offset_case = SalicusOriscusWide;
+ }
+ h_episemus = VPOS_ABOVE;
+ break;
+ default:
+ note->gtex_offset_case = FinalConnectedVirga;
+ h_episemus = VPOS_ABOVE;
+ break;
+ }
+ break;
+ case T_ANCUS:
+ case T_ANCUS_LONGQUEUE:
+ switch (i) {
+ case 1:
+ note->gtex_offset_case = first_note_case(note, glyph);
+ h_episemus = above_if_h_episemus(note->next);
+ v_episemus = VPOS_BELOW;
+ break;
+ case 2:
+ note->gtex_offset_case = note_before_last_note_case(glyph, note);
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ break;
+ case 3:
+ note->is_upper_note = true;
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note,
+ false);
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ break;
+ default:
+ note->is_lower_note = true;
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note,
+ false);
+ h_episemus = VPOS_BELOW;
+ v_episemus = VPOS_BELOW;
+ break;
+ }
+ break;
+ case T_TORCULUS:
+ switch (i) {
+ case 1:
+ note->gtex_offset_case = first_note_case(note, glyph);
+ h_episemus = above_if_h_episemus(note->next);
+ v_episemus = VPOS_BELOW;
+ break;
+ case 2:
+ high_low_set_upper(glyph, note);
+ note->gtex_offset_case = note_before_last_note_case(glyph, note);
+ h_episemus = VPOS_ABOVE;
+ if (glyph->u.notes.liquescentia & L_DEMINUTUS) {
+ v_episemus = below_if_next_ambitus_allows(note);
+ } else {
+ v_episemus = VPOS_BELOW;
+ }
+ break;
+ default:
+ high_low_set_lower(glyph, note);
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note,
+ false);
+ h_episemus = above_if_h_episemus(note->previous);
+ v_episemus = VPOS_BELOW;
+ break;
+ }
+ break;
+ default: /* case T_ONE_NOTE */
+ h_episemus = VPOS_ABOVE;
+ v_episemus = VPOS_BELOW;
+ switch (note->u.note.shape) {
+ case S_PUNCTUM_INCLINATUM_DEMINUTUS:
+ note->gtex_offset_case = FinalInclinatumDeminutus;
+ break;
+ case S_PUNCTUM_INCLINATUM_AUCTUS:
+ case S_PUNCTUM_INCLINATUM:
+ case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS:
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ note->gtex_offset_case = FinalInclinatum;
+ break;
+ case S_STROPHA:
+ note->gtex_offset_case = FinalStropha;
+ break;
+ case S_QUILISMA:
+ note->gtex_offset_case = FinalQuilisma;
+ break;
+ case S_ORISCUS:
+ case S_ORISCUS_AUCTUS:
+ case S_ORISCUS_DEMINUTUS:
+ note->gtex_offset_case = FinalOriscus;
+ break;
+ case S_VIRGA:
+ note->gtex_offset_case = InitialVirga;
+ break;
+ case S_VIRGA_REVERSA:
+ if (glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS) {
+ note->gtex_offset_case = FinalVirgaAuctus;
+ } else {
+ note->gtex_offset_case = InitialVirga;
+ }
+ break;
+ case S_LINEA_PUNCTUM:
+ case S_LINEA_PUNCTUM_CAVUM:
+ note->gtex_offset_case = FinalLineaPunctum;
+ break;
+ case S_LINEA:
+ note->gtex_offset_case = FinalPunctum;
+ break;
+ default:
+ note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note,
+ true);
+ break;
+ }
+ break;
+ }
+
+ if (note->signs & _V_EPISEMUS) {
+ if (note->v_episemus_height) {
+ if (note->v_episemus_height > note->u.note.pitch) {
+ /* above is always higher because of GregorioTeX's design */
+ note->v_episemus_height += (int)VPOS_ABOVE;
+ }
+ }
+ else {
+ note->v_episemus_height = note->u.note.pitch + (int)v_episemus;
+ if ((v_episemus == VPOS_BELOW && v_episemus_below_is_lower)
+ || v_episemus == VPOS_ABOVE) {
+ /* above is always higher because of GregorioTeX's design */
+ note->v_episemus_height += (int)v_episemus;
+ }
+ }
+ }
+
+ return h_episemus;
+}
+
+static __inline char compute_h_episemus_height(
+ const gregorio_glyph *const glyph, const gregorio_note *const note,
+ const gregorio_vposition vpos)
+{
+ char height = note->u.note.pitch;
+
+ if (note->signs & _V_EPISEMUS) {
+ if ((vpos == VPOS_ABOVE && note->v_episemus_height >= height)
+ || (vpos == VPOS_BELOW && note->v_episemus_height <= height)) {
+ height = note->v_episemus_height;
+ }
+ }
+
+ if (vpos == VPOS_ABOVE && note->choral_sign
+ && !choral_sign_here_is_low(glyph, note, NULL)) {
+ ++height;
+ if (!is_on_a_line(note->u.note.pitch)) {
+ ++height;
+ }
+ }
+
+ return height + (int)vpos;
+}
+
+static bool is_bridgeable_space(const gregorio_element *const element)
+{
+ if (element->type == GRE_SPACE) {
+ switch (element->u.misc.unpitched.info.space) {
+ case SP_NEUMATIC_CUT:
+ case SP_LARGER_SPACE:
+ case SP_NEUMATIC_CUT_NB:
+ case SP_LARGER_SPACE_NB:
+ return true;
+ default:
+ /* do nothing */
+ break;
+ }
+ }
+
+ return false;
+}
+
+typedef struct height_computation {
+ const gregorio_vposition vpos;
+ bool (*const is_applicable)(const gregorio_note *);
+ bool (*const is_shown)(const gregorio_note *);
+ bool (*const is_connected)(const gregorio_note *);
+ grehepisemus_size (*const get_size)(const gregorio_note *);
+ bool (*const is_better_height)(signed char, signed char);
+ void (*const position)(gregorio_note *, signed char, bool);
+
+ bool active;
+ char height;
+ bool connected;
+ const gregorio_element *start_element;
+ const gregorio_glyph *start_glyph;
+ gregorio_note *start_note;
+ gregorio_note *last_connected_note;
+} height_computation;
+
+static bool is_h_episemus_above_applicable(const gregorio_note *const note)
+{
+ return note->h_episemus_above || !note->is_lower_note;
+}
+
+static bool is_h_episemus_below_applicable(const gregorio_note *const note)
+{
+ return note->h_episemus_below || !note->is_upper_note;
+}
+
+bool gtex_is_h_episemus_above_shown(const gregorio_note *const note)
+{
+ return note->h_episemus_above;
+}
+
+bool gtex_is_h_episemus_below_shown(const gregorio_note *const note)
+{
+ return note->h_episemus_below;
+}
+
+static bool is_h_episemus_above_connected(const gregorio_note *const note)
+{
+ return note->h_episemus_above_connect;
+}
+
+static bool is_h_episemus_below_connected(const gregorio_note *const note)
+{
+ return note->h_episemus_below_connect;
+}
+
+static grehepisemus_size get_h_episemus_above_size(
+ const gregorio_note *const note)
+{
+ return note->h_episemus_above_size;
+}
+
+static grehepisemus_size get_h_episemus_below_size(
+ const gregorio_note *const note)
+{
+ return note->h_episemus_below_size;
+}
+
+static bool is_h_episemus_above_better_height(const signed char new_height,
+ const signed char old_height)
+{
+ return new_height > old_height;
+}
+
+static bool is_h_episemus_below_better_height(const signed char new_height,
+ const signed char old_height)
+{
+ return new_height < old_height;
+}
+
+static __inline void start_h_episemus(height_computation *const h,
+ const gregorio_element *const element,
+ const gregorio_glyph *const glyph, gregorio_note *const note)
+{
+ h->start_element = element;
+ h->start_glyph = glyph;
+ h->start_note = note;
+ h->active = true;
+ h->height = compute_h_episemus_height(glyph, note, h->vpos);
+}
+
+static __inline void set_h_episemus_height(const height_computation *const h,
+ gregorio_note *const end)
+{
+ gregorio_note *last_note = NULL;
+
+ const gregorio_element *element = h->start_element;
+ const gregorio_glyph *glyph = h->start_glyph;
+ gregorio_note *note = h->start_note;
+
+ for ( ; element; element = element->next) {
+ if (element->type == GRE_ELEMENT) {
+ for (glyph = glyph? glyph : element->u.first_glyph; glyph;
+ glyph = glyph->next) {
+ if (glyph && glyph->type == GRE_GLYPH) {
+ for (note = note? note : glyph->u.notes.first_note; note;
+ note = note->next) {
+ if (end && note == end) {
+ if (last_note) {
+ h->position(last_note, h->height, false);
+ }
+ return;
+ }
+ if (h->is_applicable(note)) {
+ h->position(note, h->height, true);
+ last_note = note;
+ }
+ }
+ }
+ }
+ } else if (!is_bridgeable_space(element)) {
+ break;
+ }
+ }
+
+ if (last_note) {
+ h->position(last_note, h->height, false);
+ }
+}
+
+static __inline bool is_connected_left(const grehepisemus_size size) {
+ return size == H_NORMAL || size == H_SMALL_LEFT;
+}
+
+static __inline bool is_connected_right(const grehepisemus_size size) {
+ return size == H_NORMAL || size == H_SMALL_RIGHT;
+}
+
+static __inline bool is_connectable_interglyph_ambitus(
+ const gregorio_note *const first, const gregorio_note *const second)
+{
+ return first && second
+ && abs(first->u.note.pitch - second->u.note.pitch) < 3;
+}
+
+static __inline bool has_space_to_left(const gregorio_note *const note) {
+ switch (note->u.note.shape) {
+ case S_PUNCTUM_INCLINATUM:
+ case S_PUNCTUM_INCLINATUM_DEMINUTUS:
+ case S_PUNCTUM_INCLINATUM_AUCTUS:
+ return !is_connectable_interglyph_ambitus(note->previous, note);
+
+ default:
+ return !note->previous;
+ }
+}
+
+static __inline void end_h_episemus(height_computation *const h,
+ gregorio_note *const end)
+{
+ signed char proposed_height;
+
+ if (h->active) {
+ /* don't let the episemus clash with the note before or after */
+ if (is_connected_left(h->get_size(h->start_note))
+ && h->start_note->previous
+ && h->start_note->previous->type == GRE_NOTE
+ && is_connected_right(h->get_size(h->start_note->previous))
+ && !has_space_to_left(h->start_note)) {
+ proposed_height = h->start_note->previous->u.note.pitch + h->vpos;
+ if (h->is_better_height(proposed_height, h->height)) {
+ h->height = proposed_height;
+ }
+ }
+ /* end->previous checks that it's within the same glyph */
+ if (end && end->type == GRE_NOTE && end->previous
+ && end->previous->type == GRE_NOTE
+ && is_connected_left(h->get_size(end))
+ && !has_space_to_left(end) && h->last_connected_note
+ && is_connected_right(h->get_size(h->last_connected_note))) {
+ proposed_height = end->u.note.pitch + h->vpos;
+ if (h->is_better_height(proposed_height, h->height)) {
+ h->height = proposed_height;
+ }
+ }
+
+ set_h_episemus_height(h, end);
+
+ h->active = false;
+ h->height = 0;
+ h->connected = false;
+ h->start_element = NULL;
+ h->start_glyph = NULL;
+ h->start_note = NULL;
+ h->last_connected_note = NULL;
+ }
+}
+
+static __inline void compute_h_episemus(height_computation *const h,
+ const gregorio_element *const element,
+ const gregorio_glyph *const glyph, gregorio_note *const note,
+ const int i)
+{
+ signed char next_height;
+ grehepisemus_size size;
+
+ if (h->is_applicable(note)) {
+ if (h->is_shown(note)) {
+ size = h->get_size(note);
+
+ if (h->active) {
+ if (h->connected && is_connected_left(size)
+ && (i != 1 || is_connectable_interglyph_ambitus(
+ note, h->last_connected_note))) {
+ next_height = compute_h_episemus_height(glyph, note,
+ h->vpos);
+ if (h->is_better_height(next_height, h->height)) {
+ h->height = next_height;
+ }
+ }
+ else {
+ end_h_episemus(h, note);
+ start_h_episemus(h, element, glyph, note);
+ }
+ } else {
+ start_h_episemus(h, element, glyph, note);
+ }
+
+ h->connected = h->is_connected(note) && is_connected_right(size);
+ h->last_connected_note = note;
+ } else {
+ end_h_episemus(h, note);
+ }
+ }
+}
+
+static __inline void compute_note_positioning(height_computation *const above,
+ height_computation *const below, const gregorio_element *const element,
+ const gregorio_glyph *const glyph, gregorio_note *const note,
+ const int i, const gtex_type type)
+{
+ gregorio_vposition default_vpos = advise_positioning(glyph, note, i, type);
+
+ if (note->h_episemus_above == HEPISEMUS_AUTO
+ && note->h_episemus_below == HEPISEMUS_AUTO) {
+ if (default_vpos == VPOS_BELOW) {
+ note->h_episemus_above = HEPISEMUS_NONE;
+ }
+ else { /* default_vpos == VPOS_ABOVE */
+ note->h_episemus_below = HEPISEMUS_NONE;
+ }
+ }
+
+ compute_h_episemus(above, element, glyph, note, i);
+ compute_h_episemus(below, element, glyph, note, i);
+}
+
+void gregoriotex_compute_positioning(const gregorio_element *element)
+{
+ height_computation above = {
+ /*.vpos =*/ VPOS_ABOVE,
+ /*.is_applicable =*/ &is_h_episemus_above_applicable,
+ /*.is_shown =*/ &gtex_is_h_episemus_above_shown,
+ /*.is_connected =*/ &is_h_episemus_above_connected,
+ /*.get_size =*/ &get_h_episemus_above_size,
+ /*.is_better_height =*/ &is_h_episemus_above_better_height,
+ /*.position =*/ &gregorio_position_h_episemus_above,
+
+ /*.active =*/ false,
+ /*.height =*/ 0,
+ /*.connected =*/ false,
+ /*.start_element =*/ NULL,
+ /*.start_glyph =*/ NULL,
+ /*.start_note =*/ NULL,
+ /*.last_connected_note =*/ NULL,
+ };
+ height_computation below = {
+ /*.vpos =*/ VPOS_BELOW,
+ /*.is_applicable =*/ &is_h_episemus_below_applicable,
+ /*.is_shown =*/ &gtex_is_h_episemus_below_shown,
+ /*.is_connected =*/ &is_h_episemus_below_connected,
+ /*.get_size =*/ &get_h_episemus_below_size,
+ /*.is_better_height =*/ &is_h_episemus_below_better_height,
+ /*.position =*/ &gregorio_position_h_episemus_below,
+
+ /*.active =*/ false,
+ /*.height =*/ 0,
+ /*.connected =*/ false,
+ /*.start_element =*/ NULL,
+ /*.start_glyph =*/ NULL,
+ /*.start_note =*/ NULL,
+ /*.last_connected_note =*/ NULL,
+ };
+ int i;
+ gtex_alignment ignored;
+ gtex_type type;
+
+ for (; element; element = element->next) {
+ if (element->type == GRE_ELEMENT) {
+ const gregorio_glyph *glyph;
+ for (glyph = element->u.first_glyph; glyph;
+ glyph = glyph->next) {
+ if (glyph->type == GRE_GLYPH) {
+ gregorio_note *note;
+ i = 0;
+ gregoriotex_determine_glyph_name(glyph, element, &ignored,
+ &type);
+ for (note = glyph->u.notes.first_note; note;
+ note = note->next) {
+ if (note->type == GRE_NOTE) {
+ compute_note_positioning(&above, &below, element,
+ glyph, note, ++i, type);
+ }
+ }
+ }
+ }
+ } else if (!is_bridgeable_space(element)) {
+ end_h_episemus(&above, NULL);
+ end_h_episemus(&below, NULL);
+ }
+ }
+ end_h_episemus(&above, NULL);
+ end_h_episemus(&below, NULL);
+}
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-write.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-write.c
new file mode 100644
index 00000000000..8481b8228c9
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex-write.c
@@ -0,0 +1,3265 @@
+/*
+ * Copyright (C) 2008-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>. */
+
+/**
+ * @file
+ * @brief The plugin which writes a GregorioTeX score.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <time.h>
+#include "bool.h"
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+#include "characters.h"
+#include "plugins.h"
+#include "support.h"
+#include "utf8strings.h"
+
+#include "gregoriotex.h"
+
+#define BUFSIZE 128
+
+/* a structure containing the status */
+typedef struct gregoriotex_status {
+ bool point_and_click;
+
+ /* true if the current_glyph will have an additional line under or not
+ * (useful to determine the length of the bar in case of a flexa starting
+ * at d */
+ bool bottom_line;
+
+ signed char top_height;
+ signed char bottom_height;
+
+ /* indicates if there is a translation on the line */
+ bool translation;
+
+ /* indicates if there is "above lines text" on the line */
+ bool abovelinestext;
+} gregoriotex_status;
+
+#define UNDETERMINED_HEIGHT -127
+
+#define MAX_AMBITUS 5
+static const char *tex_ambitus[] = {
+ NULL, "One", "Two", "Three", "Four", "Five"
+};
+
+/* the value indicating to GregorioTeX that there is no flat */
+#define NO_KEY_FLAT LOWEST_PITCH
+#define PITCH_BELOW_STAFF (LOWEST_PITCH + 2)
+#define PITCH_ABOVE_STAFF (LOWEST_PITCH + 10)
+
+/* a helper macro for the following function */
+#define WHILEGLYPH(prevornext) \
+ while(glyph) {\
+ if (glyph->type == GRE_GLYPH) {\
+ note = glyph->u.notes.first_note;\
+ while (note) {\
+ if (note->u.note.pitch < PITCH_BELOW_STAFF) {\
+ return true;\
+ }\
+ note = note->next;\
+ }\
+ }\
+ glyph = glyph->prevornext;\
+ }
+
+static __inline signed char pitch_value(const signed char height) {
+ /* right now height == pitch, but this function allows us to change
+ * the offset easily */
+ return height;
+}
+
+static __inline int bool_to_int(bool value) {
+ return value? 1 : 0;
+}
+
+/* a function that determines if we must use a long queue or not (less easy
+ * that it might seem) */
+
+static bool is_longqueue(const signed char pitch,
+ const gregorio_glyph *const current_glyph,
+ const gregorio_element *const current_element)
+{
+ gregorio_note *note;
+ gregorio_glyph *glyph = current_glyph->next;
+ gregorio_element *element = current_element->next;
+ switch (pitch - LOWEST_PITCH) {
+ case 1:
+ case 5:
+ case 7:
+ case 9:
+ case 11:
+ return true;
+ case 3:
+ /* we first look forward to see if there is a note underneath c */
+ WHILEGLYPH(next);
+ if (element && element->type == GRE_SPACE
+ && (element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT
+ || element->u.misc.unpitched.info.space ==
+ SP_LARGER_SPACE
+ || element->u.misc.unpitched.info.space ==
+ SP_NEUMATIC_CUT_NB
+ || element->u.misc.unpitched.info.space ==
+ SP_LARGER_SPACE_NB)) {
+ element = element->next;
+ }
+ if (element && element->type == GRE_ELEMENT) {
+ glyph = element->u.first_glyph;
+ WHILEGLYPH(next);
+ }
+ /* and now something completely different */
+ glyph = current_glyph->previous;
+ element = current_element->previous;
+ WHILEGLYPH(previous);
+ if (element && element->type == GRE_SPACE
+ && (element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT
+ || element->u.misc.unpitched.info.space ==
+ SP_LARGER_SPACE
+ || element->u.misc.unpitched.info.space ==
+ SP_NEUMATIC_CUT_NB
+ || element->u.misc.unpitched.info.space ==
+ SP_LARGER_SPACE_NB)) {
+ element = element->previous;
+ }
+ if (element && element->type == GRE_ELEMENT) {
+ glyph = element->u.first_glyph;
+ WHILEGLYPH(next);
+ }
+ return false;
+ default:
+ return false;
+ }
+}
+
+/* inline functions that we will use to determine if we need a short bar or
+ * not */
+
+/* we define d to be short instead of long... may induce errors, but fixes
+ * some too */
+static __inline bool is_shortqueue(const signed char pitch,
+ const gregorio_glyph *const glyph,
+ const gregorio_element *const element)
+{
+ return !is_longqueue(pitch, glyph, element);
+}
+
+static grestyle_style gregoriotex_ignore_style = ST_NO_STYLE;
+static grestyle_style gregoriotex_next_ignore_style = ST_NO_STYLE;
+
+static const char *gregoriotex_determine_note_glyph_name(gregorio_note *note,
+ gregorio_glyph *glyph, gregorio_element *element, gtex_alignment *type)
+{
+ static char buf[128];
+ const char *name;
+
+ if (!note) {
+ gregorio_message(_("called with NULL pointer"),
+ "gregoriotex_determine_note_glyph_name", VERBOSITY_ERROR, 0);
+ return "";
+ }
+
+ *type = AT_ONE_NOTE;
+ switch (note->u.note.shape) {
+ case S_PUNCTUM_INCLINATUM:
+ *type = AT_PUNCTUM_INCLINATUM;
+ return "PunctumInclinatum";
+ case S_PUNCTUM_INCLINATUM_DEMINUTUS:
+ return "PunctumInclinatumDeminutus";
+ case S_PUNCTUM_INCLINATUM_AUCTUS:
+ return "PunctumInclinatumAuctus";
+ case S_PUNCTUM:
+ return "Punctum";
+ case S_PUNCTUM_AUCTUS_ASCENDENS:
+ return "PunctumAscendens";
+ case S_PUNCTUM_AUCTUS_DESCENDENS:
+ return "PunctumDescendens";
+ case S_PUNCTUM_DEMINUTUS:
+ return "PunctumDeminutus";
+ case S_PUNCTUM_CAVUM:
+ return "PunctumCavum";
+ case S_LINEA:
+ return "Linea";
+ case S_LINEA_PUNCTUM:
+ return "LineaPunctum";
+ case S_LINEA_PUNCTUM_CAVUM:
+ return "LineaPunctumCavum";
+ case S_VIRGA:
+ if (is_shortqueue(note->u.note.pitch, glyph, element)) {
+ return "Virga";
+ }
+ return "VirgaLongqueue";
+ case S_VIRGA_REVERSA:
+ switch (note->u.note.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ if (is_shortqueue(note->u.note.pitch, glyph, element)) {
+ name = "VirgaReversaAscendens";
+ } else {
+ name = "VirgaReversaLongqueueAscendens";
+ }
+ if (note->u.note.pitch - LOWEST_PITCH == 3) {
+ /* if we're on the 'd' line, the queue could be long or short */
+ gregorio_snprintf(buf, sizeof buf,
+ "VirgaReversaAscendensOnDLine{\\GreCP%s}", name);
+ return buf;
+ }
+ return name;
+ case L_AUCTUS_DESCENDENS:
+ if (is_shortqueue(note->u.note.pitch, glyph, element)) {
+ return "VirgaReversaDescendens";
+ }
+ return "VirgaReversaLongqueueDescendens";
+ default:
+ if (is_shortqueue(note->u.note.pitch, glyph, element)) {
+ return "VirgaReversa";
+ }
+ return "VirgaReversaLongqueue";
+ }
+ case S_ORISCUS:
+ *type = AT_ORISCUS;
+ return "Oriscus";
+ case S_ORISCUS_AUCTUS:
+ *type = AT_ORISCUS;
+ return "OriscusReversus";
+ case S_ORISCUS_DEMINUTUS:
+ *type = AT_ORISCUS;
+ return "OriscusDeminutus";
+ case S_QUILISMA:
+ *type = AT_QUILISMA;
+ return "Quilisma";
+ case S_ORISCUS_SCAPUS:
+ if (is_shortqueue(note->u.note.pitch, glyph, element)) {
+ return "OriscusScapus";
+ }
+ return "OriscusScapusLongqueue";
+ case S_STROPHA:
+ *type = AT_STROPHA;
+ if (glyph->u.notes.liquescentia == L_AUCTA) {
+ return "StrophaAucta";
+ }
+ return "Stropha";
+ case S_STROPHA_AUCTA:
+ *type = AT_STROPHA;
+ return "StrophaAucta";
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ *type = AT_PUNCTUM_INCLINATUM;
+ return "PunctumCavumInclinatum";
+ case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS:
+ return "PunctumCavumInclinatumAuctus";
+ default:
+ gregorio_messagef("gregoriotex_determine_note_glyph_name",
+ VERBOSITY_ERROR, 0, _("called with unknown shape: %d"),
+ note->u.note.shape);
+ return "";
+ }
+}
+
+/*
+ * The different liquescentiae are:
+ * 'Nothing'
+ * 'InitioDebilis'
+ * 'Deminutus
+ * 'Ascendens'
+ * 'Descendens'
+ * 'InitioDebilisDeminutus'
+ * 'InitioDebilisAscendens'
+ * 'InitioDebilisDescendens'
+ *
+ * If it is an auctus, which may be ascendens or descendens, by default we
+ * consider it as an ascendens
+ *
+ * They also are and must be the same as in squarize.py.
+ */
+
+static const char *gregoriotex_determine_liquescentia(gtex_glyph_liquescentia type,
+ gregorio_liquescentia liquescentia)
+{
+ switch (liquescentia) {
+ case L_AUCTA:
+ liquescentia = L_AUCTUS_ASCENDENS;
+ break;
+ case L_AUCTA_INITIO_DEBILIS:
+ liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS;
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+
+ switch (type) {
+ case LG_ALL:
+ break;
+ case LG_NO_INITIO:
+ if (liquescentia >= L_INITIO_DEBILIS) {
+ liquescentia = liquescentia - L_INITIO_DEBILIS;
+ }
+ break;
+ case LG_ONLY_DEMINUTUS:
+ if (liquescentia != L_DEMINUTUS
+ && liquescentia != L_DEMINUTUS_INITIO_DEBILIS) {
+ liquescentia = L_NO_LIQUESCENTIA;
+ }
+ break;
+ case LG_ONLY_AUCTUS:
+ if (liquescentia != L_AUCTUS_ASCENDENS
+ && liquescentia != L_AUCTUS_DESCENDENS) {
+ liquescentia = L_NO_LIQUESCENTIA;
+ }
+ case LG_UNDET_AUCTUS:
+ if (liquescentia == L_AUCTUS_DESCENDENS) {
+ liquescentia = L_AUCTUS_ASCENDENS;
+ }
+ if (liquescentia == L_AUCTUS_DESCENDENS_INITIO_DEBILIS) {
+ liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS;
+ }
+ break;
+ default:
+ liquescentia = L_NO_LIQUESCENTIA;
+ break;
+ }
+
+ /* now we convert liquescentia into the good GregorioTeX liquescentia
+ * numbers */
+
+ switch (liquescentia) {
+ case L_DEMINUTUS:
+ return "Deminutus";
+ case L_AUCTUS_ASCENDENS:
+ return "Ascendens";
+ case L_AUCTA:
+ case L_AUCTUS_DESCENDENS:
+ return "Descendens";
+ case L_INITIO_DEBILIS:
+ return "InitioDebilis";
+ case L_DEMINUTUS_INITIO_DEBILIS:
+ return "InitioDebilisDeminutus";
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ return "InitioDebilisAscendens";
+ case L_AUCTA_INITIO_DEBILIS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ return "InitioDebilisDescendens";
+ case L_NO_LIQUESCENTIA:
+ /* break out and return "Nothing" */
+ break;
+ }
+
+ return "Nothing";
+}
+
+static __inline int compute_ambitus(const gregorio_note *const current_note)
+{
+ int first = current_note->u.note.pitch;
+ int second = current_note->next->u.note.pitch;
+ int ambitus;
+ if (first < second) {
+ ambitus = second - first;
+ } else {
+ ambitus = first - second;
+ }
+ if (ambitus < 1 || ambitus > MAX_AMBITUS) {
+ gregorio_messagef("compute_ambitus", VERBOSITY_ERROR, 0,
+ _("unsupported ambitus: %d"), ambitus);
+ return 0;
+ }
+ return ambitus;
+}
+
+static const char *compute_glyph_name(const gregorio_glyph *const glyph,
+ const char *const shape, const gtex_glyph_liquescentia ltype)
+{
+ static char buf[BUFSIZE];
+
+ const char *liquescentia = gregoriotex_determine_liquescentia(ltype,
+ glyph->u.notes.liquescentia);
+ gregorio_note *current_note;
+ /* then we start making our formula */
+ int ambitus1, ambitus2, ambitus3;
+ if (!glyph) {
+ gregorio_message(_("called with NULL pointer"),
+ "compute_glyph_name", VERBOSITY_ERROR, 0);
+ return "";
+ }
+ if (!glyph->u.notes.first_note) {
+ gregorio_message(_("called with a glyph that have no note"),
+ "compute_glyph_name", VERBOSITY_ERROR, 0);
+ return "";
+ }
+ current_note = glyph->u.notes.first_note;
+ if (!current_note->next) {
+ gregorio_message(_("called with a multi-note glyph that has only "
+ "one note"), "compute_glyph_name", VERBOSITY_ERROR, 0);
+ return "";
+ }
+ if (!(ambitus1 = compute_ambitus(current_note))) {
+ return "";
+ }
+ current_note = current_note->next;
+ if (!current_note->next) {
+ gregorio_snprintf(buf, BUFSIZE, "%s%s%s", shape, tex_ambitus[ambitus1],
+ liquescentia);
+ return buf;
+ }
+ if (!(ambitus2 = compute_ambitus(current_note))) {
+ return "";
+ }
+ current_note = current_note->next;
+ if (!current_note->next) {
+ gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s", shape,
+ tex_ambitus[ambitus1], tex_ambitus[ambitus2], liquescentia);
+ return buf;
+ }
+ if (!(ambitus3 = compute_ambitus(current_note))) {
+ return "";
+ }
+ gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s", shape, tex_ambitus[ambitus1],
+ tex_ambitus[ambitus2], tex_ambitus[ambitus3], liquescentia);
+ return buf;
+}
+
+/* the function that calculates the number of the glyph. It also
+ * calculates the type, used for determining the position of signs. Type is
+ * very basic, it is only the global dimensions : torculus, one_note, etc. */
+
+const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph,
+ const gregorio_element *const element, gtex_alignment *const type,
+ gtex_type *const gtype)
+{
+ const char *shape = NULL;
+ gtex_glyph_liquescentia ltype;
+ char pitch = 0;
+ if (!glyph) {
+ gregorio_message(_("called with NULL pointer"),
+ "gregoriotex_determine_glyph_name", VERBOSITY_ERROR, 0);
+ return "";
+ }
+ if (!glyph->u.notes.first_note) {
+ gregorio_message(_("called with a glyph that has no note"),
+ "gregorio_tex_determine_glyph_name", VERBOSITY_ERROR, 0);
+ return "";
+ }
+ *gtype = T_ONE_NOTE;
+ switch (glyph->u.notes.glyph_type) {
+ case G_PODATUS:
+ pitch = glyph->u.notes.first_note->next->u.note.pitch;
+ switch (glyph->u.notes.first_note->u.note.shape) {
+ case S_QUILISMA:
+ *type = AT_QUILISMA;
+ /* the next if is because we made the choice that AUCTUS shapes
+ * look like pes quadratum. */
+ if (glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS
+ || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS
+ || glyph->u.notes.liquescentia ==
+ L_AUCTUS_DESCENDENS_INITIO_DEBILIS
+ || glyph->u.notes.liquescentia ==
+ L_AUCTUS_ASCENDENS_INITIO_DEBILIS) {
+ *gtype = T_PESQUILISMAQUADRATUM;
+ shape = "PesQuilismaQuadratum";
+ } else {
+ *gtype = T_PESQUILISMA;
+ shape = "PesQuilisma";
+ }
+ ltype = LG_NO_INITIO;
+ break;
+ case S_ORISCUS:
+ case S_ORISCUS_SCAPUS:
+ *type = AT_ORISCUS;
+ /* TODO: we could factorize this code */
+ if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA
+ && is_longqueue(pitch, glyph, element)) {
+ *gtype = T_PESQUASSUS_LONGQUEUE;
+ shape = "PesQuassusLongqueue";
+ } else {
+ *gtype = T_PESQUASSUS;
+ shape = "PesQuassus";
+ }
+ ltype = LG_NO_INITIO;
+ break;
+ default:
+ *type = AT_ONE_NOTE;
+ if (glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS
+ || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS
+ || glyph->u.notes.liquescentia ==
+ L_AUCTUS_DESCENDENS_INITIO_DEBILIS
+ || glyph->u.notes.liquescentia ==
+ L_AUCTUS_ASCENDENS_INITIO_DEBILIS) {
+ *gtype = T_PESQUADRATUM;
+ shape = "PesQuadratum";
+ } else {
+ *gtype = T_PES;
+ shape = "Pes";
+ }
+ ltype = LG_ALL;
+ break;
+ }
+ break;
+ case G_PES_QUADRATUM:
+ pitch = glyph->u.notes.first_note->next->u.note.pitch;
+ switch (glyph->u.notes.first_note->u.note.shape) {
+ case S_QUILISMA:
+ *type = AT_QUILISMA;
+ if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA
+ && is_longqueue(pitch, glyph, element)) {
+ *gtype = T_PESQUILISMAQUADRATUM_LONGQUEUE;
+ shape = "PesQuilismaQuadratumLongqueue";
+ } else {
+ *gtype = T_PESQUILISMAQUADRATUM;
+ shape = "PesQuilismaQuadratum";
+ }
+ ltype = LG_NO_INITIO;
+ break;
+ case S_ORISCUS:
+ *type = AT_ORISCUS;
+ if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA
+ && is_longqueue(pitch, glyph, element)) {
+ *gtype = T_PESQUASSUS_LONGQUEUE;
+ shape = "PesQuadratumLongqueue";
+ } else {
+ *gtype = T_PESQUASSUS;
+ shape = "PesQuassus";
+ }
+ ltype = LG_NO_INITIO;
+ break;
+ default:
+ *type = AT_ONE_NOTE;
+ if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA
+ && is_longqueue(pitch, glyph, element)) {
+ *gtype = T_PESQUADRATUM_LONGQUEUE;
+ shape = "PesQuadratumLongqueue";
+ } else {
+ *gtype = T_PESQUADRATUM;
+ shape = "PesQuadratum";
+ }
+ ltype = LG_ALL;
+ break;
+ }
+ break;
+ case G_VIRGA_STRATA:
+ pitch = glyph->u.notes.first_note->next->u.note.pitch;
+ *type = AT_ONE_NOTE;
+ *gtype = T_VIRGA_STRATA;
+ shape = "VirgaStrata";
+ ltype = LG_ALL;
+ break;
+ case G_FLEXA:
+ pitch = glyph->u.notes.first_note->u.note.pitch;
+ if (glyph->u.notes.liquescentia == L_DEMINUTUS) {
+ *type = AT_FLEXUS_DEMINUTUS;
+ } else {
+ if (pitch - glyph->u.notes.first_note->next->u.note.pitch == 1) {
+ *type = AT_FLEXUS_1;
+ } else {
+ *type = AT_FLEXUS;
+ }
+ }
+ if (glyph->u.notes.first_note->u.note.shape == S_ORISCUS) {
+ *gtype = T_FLEXUS_ORISCUS;
+ shape = "FlexusOriscus";
+ ltype = LG_NO_INITIO;
+ } else if (glyph->u.notes.first_note->u.note.shape == S_ORISCUS_SCAPUS) {
+ if (is_shortqueue(pitch, glyph, element)) {
+ *gtype = T_FLEXUS_ORISCUS_SCAPUS;
+ shape = "FlexusOriscusScapus";
+ } else {
+ *gtype = T_FLEXUS_ORISCUS_SCAPUS_LONGQUEUE;
+ shape = "FlexusOriscusScapusLongqueue";
+ }
+ ltype = LG_NO_INITIO;
+ } else {
+ if (is_shortqueue(pitch, glyph, element)) {
+ *gtype = T_FLEXUS;
+ shape = "Flexus";
+ } else {
+ *gtype = T_FLEXUS_LONGQUEUE;
+ shape = "FlexusLongqueue";
+ }
+ ltype = LG_NO_INITIO;
+ }
+ break;
+ case G_TORCULUS:
+ *gtype = T_TORCULUS;
+ if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) {
+ *type = AT_QUILISMA;
+ shape = "TorculusQuilisma";
+ ltype = LG_NO_INITIO;
+ } else {
+ *type = AT_ONE_NOTE;
+ shape = "Torculus";
+ ltype = LG_ALL;
+ }
+ break;
+ case G_TORCULUS_LIQUESCENS:
+ *gtype = T_TORCULUS_LIQUESCENS;
+ if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) {
+ *type = AT_QUILISMA;
+ shape = "TorculusLiquescensQuilisma";
+ } else {
+ *type = AT_ONE_NOTE;
+ shape = "TorculusLiquescens";
+ }
+ ltype = LG_ONLY_DEMINUTUS;
+ break;
+ case G_TORCULUS_RESUPINUS_FLEXUS:
+ *type = AT_ONE_NOTE;
+ *gtype = T_TORCULUS_RESUPINUS_FLEXUS;
+ break;
+ case G_PORRECTUS:
+ *type = AT_PORRECTUS;
+ *gtype = T_PORRECTUS;
+ shape = "Porrectus";
+ ltype = LG_NO_INITIO;
+ break;
+ case G_TORCULUS_RESUPINUS:
+ *gtype = T_TORCULUS_RESUPINUS;
+ if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) {
+ *type = AT_QUILISMA;
+ shape = "TorculusResupinusQuilisma";
+ } else {
+ *type = AT_ONE_NOTE;
+ shape = "TorculusResupinus";
+ }
+ ltype = LG_ALL;
+ break;
+ case G_PORRECTUS_FLEXUS:
+ *type = AT_PORRECTUS;
+ *gtype = T_PORRECTUS_FLEXUS;
+ shape = "PorrectusFlexus";
+ ltype = LG_NO_INITIO;
+ break;
+ case G_PORRECTUS_NO_BAR:
+ *type = AT_PORRECTUS;
+ *gtype = T_TORCULUS_RESUPINUS;
+ shape = "PorrectusNobar";
+ ltype = LG_NO_INITIO;
+ break;
+ case G_PORRECTUS_FLEXUS_NO_BAR:
+ *type = AT_PORRECTUS;
+ *gtype = T_TORCULUS_RESUPINUS_FLEXUS;
+ shape = "PorrectusFlexusNobar";
+ ltype = LG_NO_INITIO;
+ break;
+ case G_ANCUS:
+ if (glyph->u.notes.liquescentia == L_DEMINUTUS
+ || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS) {
+ if (pitch - glyph->u.notes.first_note->next->u.note.pitch == 1) {
+ *type = AT_FLEXUS_1;
+ } else {
+ *type = AT_FLEXUS;
+ }
+ if (is_shortqueue(pitch, glyph, element)) {
+ *gtype = T_ANCUS;
+ shape = "Ancus";
+ } else {
+ *gtype = T_ANCUS_LONGQUEUE;
+ shape = "AncusLongqueue";
+ }
+ ltype = LG_ONLY_DEMINUTUS;
+ } else {
+ /* TODO... */
+ *type = AT_ONE_NOTE;
+ }
+ break;
+ case G_SCANDICUS:
+ *type = AT_ONE_NOTE;
+ *gtype = T_SCANDICUS;
+ shape = "Scandicus";
+ ltype = LG_NO_INITIO;
+ break;
+ case G_SALICUS:
+ *type = AT_ONE_NOTE;
+ pitch = glyph->u.notes.first_note->next->next->u.note.pitch;
+ if (is_longqueue(pitch, glyph, element)) {
+ *gtype = T_SALICUS_LONGQUEUE;
+ shape = "SalicusLongqueue";
+ } else {
+ *gtype = T_SALICUS;
+ shape = "Salicus";
+ }
+ ltype = LG_NO_INITIO;
+ break;
+ case G_ONE_NOTE:
+ case G_PUNCTUM_INCLINATUM:
+ case G_TRIGONUS:
+ case G_PUNCTA_INCLINATA:
+ case G_2_PUNCTA_INCLINATA_DESCENDENS:
+ case G_3_PUNCTA_INCLINATA_DESCENDENS:
+ case G_4_PUNCTA_INCLINATA_DESCENDENS:
+ case G_5_PUNCTA_INCLINATA_DESCENDENS:
+ case G_2_PUNCTA_INCLINATA_ASCENDENS:
+ case G_3_PUNCTA_INCLINATA_ASCENDENS:
+ case G_4_PUNCTA_INCLINATA_ASCENDENS:
+ case G_5_PUNCTA_INCLINATA_ASCENDENS:
+ case G_PUNCTUM:
+ case G_STROPHA:
+ case G_VIRGA:
+ case G_VIRGA_REVERSA:
+ case G_STROPHA_AUCTA:
+ case G_DISTROPHA:
+ case G_DISTROPHA_AUCTA:
+ case G_TRISTROPHA:
+ case G_TRISTROPHA_AUCTA:
+ case G_BIVIRGA:
+ case G_TRIVIRGA:
+ *type = AT_ONE_NOTE;
+ break;
+ default:
+ gregorio_messagef("gregoriotex_determine_glyph_name", VERBOSITY_ERROR,
+ 0, _("called with unknown glyph: %d"),
+ glyph->u.notes.glyph_type);
+ break;
+ }
+ if (shape) {
+ shape = compute_glyph_name(glyph, shape, ltype);
+ }
+ /* we fix *type with initio_debilis */
+ if (*type == AT_ONE_NOTE) {
+ if (is_initio_debilis(glyph->u.notes.liquescentia)) {
+ *type = AT_INITIO_DEBILIS;
+ }
+ }
+
+ return shape;
+}
+
+/**
+ * This now does nothing useful, since the manuscript_reference is
+ * now part of the score info. But we keep it here in case it may
+ * be needed in future.
+ */
+static void gregoriotex_write_voice_info(FILE *f, gregorio_voice_info *voice_info)
+{
+ if (!f || !voice_info) {
+ return;
+ }
+}
+
+/* this function indicates if the syllable is the last of the line. If it's the
+ * last of the score it returns false, as it's handled another way */
+static bool gregoriotex_is_last_of_line(gregorio_syllable *syllable)
+{
+ gregorio_element *current_element = NULL;
+ if (!(syllable->next_syllable)) {
+ return false;
+ }
+ if ((syllable->next_syllable->elements)[0]
+ && (syllable->next_syllable->elements)[0]->type == GRE_END_OF_LINE) {
+ /* the next syllable start by an end of line */
+ return true;
+ }
+ current_element = (syllable->elements)[0];
+ while (current_element) {
+ if (current_element->type == GRE_END_OF_LINE) {
+ /* we return true only if the end of line is the last element */
+ if (!(current_element->next)) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ current_element = current_element->next;
+ }
+ }
+ return false;
+}
+
+/*
+ * A small helper for the following function
+ */
+
+static __inline bool is_clef(gregorio_type x)
+{
+ return x == GRE_C_KEY_CHANGE || x == GRE_F_KEY_CHANGE ||
+ x == GRE_C_KEY_CHANGE_FLATED || x == GRE_F_KEY_CHANGE_FLATED;
+}
+
+/*
+ * This function is used in write_syllable, it detects if the syllable is like
+ * (c4), (::c4), (z0c4) or (z0::c4). It returns the gregorio_element of the
+ * clef change.
+ */
+static gregorio_element *gregoriotex_syllable_is_clef_change(gregorio_syllable
+ *syllable)
+{
+ gregorio_element *element;
+ if (!syllable || !syllable->elements || !syllable->elements[0]) {
+ return NULL;
+ }
+ element = syllable->elements[0];
+ /* we just detect the foud cases */
+ if (element->type == GRE_CUSTOS && element->next
+ && (is_clef(element->next->type)) && !element->next->next) {
+ return element->next;
+ }
+ if (element->type == GRE_BAR && element->next
+ && (is_clef(element->next->type)) && !element->next->next) {
+ return element->next;
+ }
+ if ((is_clef(element->type)) && !element->next) {
+ return element;
+ }
+ if (element->type == GRE_CUSTOS && element->next
+ && element->next->type == GRE_BAR && element->next->next
+ && (is_clef(element->next->next->type))
+ && !element->next->next->next) {
+ return element->next->next;
+ }
+ return NULL;
+}
+
+/*
+ * ! @brief Prints the beginning of each text style
+ */
+static void gtex_write_begin(FILE *f, grestyle_style style)
+{
+ if (style == gregoriotex_ignore_style) {
+ return;
+ }
+ switch (style) {
+ case ST_ITALIC:
+ fprintf(f, "\\GreItalic{");
+ break;
+ case ST_SMALL_CAPS:
+ fprintf(f, "\\GreSmallCaps{");
+ break;
+ case ST_BOLD:
+ fprintf(f, "\\GreBold{");
+ break;
+ case ST_FORCED_CENTER:
+ case ST_CENTER:
+ fprintf(f, "}{");
+ break;
+ case ST_TT:
+ fprintf(f, "\\GreTypewriter{");
+ break;
+ case ST_UNDERLINED:
+ fprintf(f, "\\GreUnderline{");
+ break;
+ case ST_COLORED:
+ fprintf(f, "\\GreColored{");
+ break;
+ case ST_FIRST_SYLLABLE:
+ fprintf(f, "\\GreFirstSyllable{");
+ break;
+ case ST_FIRST_SYLLABLE_INITIAL:
+ fprintf(f, "\\GreFirstSyllableInitial{");
+ break;
+ default:
+ break;
+ }
+}
+
+/**
+ * @brief Ends each text style
+ */
+static void gtex_write_end(FILE *f, grestyle_style style)
+{
+ if (style == gregoriotex_ignore_style) {
+ return;
+ }
+ switch (style) {
+ case ST_FORCED_CENTER:
+ case ST_CENTER:
+ fprintf(f, "}{");
+ break;
+ case ST_INITIAL:
+ break;
+ default:
+ fprintf(f, "}");
+ break;
+ }
+}
+
+/*
+ * ! @brief Writes GregorioTeX special characters. This function takes the
+ * special characters as input (i.e. from gabc representation), and writes them
+ * * in GregorioTeX form.
+ */
+static void gtex_write_special_char(FILE *f, grewchar *special_char)
+{
+ if (!gregorio_wcsbufcmp(special_char, "A/")) {
+ fprintf(f, "\\Abar{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "%")) {
+ fprintf(f, "\\%%{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "R/")) {
+ fprintf(f, "\\Rbar{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "V/")) {
+ fprintf(f, "\\Vbar{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, ACCENTED_AE)) {
+ fprintf(f, "\\'\\ae{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "'ae")) {
+ fprintf(f, "\\'\\ae{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, ACCENTED_OE)) {
+ fprintf(f, "\\'\\oe{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "'oe")) {
+ fprintf(f, "\\'\\oe{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "ae")) {
+ fprintf(f, "\\ae{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "oe")) {
+ fprintf(f, "\\oe{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "*")) {
+ fprintf(f, "\\GreStar{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "+")) {
+ fprintf(f, "\\GreDagger{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "-")) {
+ fprintf(f, "\\GreZeroHyph{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "\\")) {
+ fprintf(f, "\\textbackslash{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "&")) {
+ fprintf(f, "\\&{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "#")) {
+ fprintf(f, "\\#{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "_")) {
+ fprintf(f, "\\_{}");
+ return;
+ }
+ if (!gregorio_wcsbufcmp(special_char, "~")) {
+ fprintf(f, "\\GreTilde{}");
+ return;
+ }
+}
+
+static void gtex_write_verb(FILE *f, grewchar *first_char)
+{
+ gregorio_print_unistring(f, first_char);
+}
+
+static void gtex_print_char(FILE *f, grewchar to_print)
+{
+ switch (to_print) {
+ case L'*':
+ fprintf(f, "\\GreStar{}");
+ break;
+ case L'%':
+ fprintf(f, "\\%%{}");
+ break;
+ case L'\\':
+ fprintf(f, "\\textbackslash{}");
+ break;
+ case L'&':
+ fprintf(f, "\\&{}");
+ break;
+ case L'#':
+ fprintf(f, "\\#{}");
+ break;
+ case L'+':
+ fprintf(f, "\\GreDagger{}");
+ break;
+ case L'_':
+ fprintf(f, "\\_{}");
+ break;
+ case L'-':
+ fprintf(f, "\\GreHyph{}");
+ break;
+ default:
+ gregorio_print_unichar(f, to_print);
+ break;
+ }
+ return;
+}
+
+/* a function to map the internal ST_* styles to gregoriotex styles as defined
+ * in gregoriotex-syllables.tex */
+static unsigned char gregoriotex_internal_style_to_gregoriotex(grestyle_style
+ style)
+{
+ switch (style) {
+ case ST_ITALIC:
+ return 1;
+ break;
+ case ST_BOLD:
+ return 2;
+ break;
+ case ST_SMALL_CAPS:
+ return 3;
+ break;
+ case ST_TT:
+ return 4;
+ break;
+ case ST_UNDERLINED:
+ return 5;
+ break;
+ case ST_COLORED:
+ return 6;
+ break;
+ default:
+ return 0;
+ break;
+ }
+}
+
+/*
+ * A quite hacky function: when we have only one style (typically italic) and
+ * when this style is on all the parts, then we return this style.
+ *
+ */
+static grestyle_style gregoriotex_fix_style(gregorio_character *first_character)
+{
+ grestyle_style possible_fixed_style = ST_NO_STYLE;
+ unsigned char state = 0;
+ /*
+ * states are: - 0: we didn't meet any style yet, which means that if we
+ * encounter: * a character -> we can return, nothing to do * a style -> we
+ * go in state 1 * center or initial: stay in state 0 - 1: we encountered a
+ * style, if we encounter * another style : we can return * something that
+ * makes us change syllable part (like center or initial) -> go in state 2 *
+ * a character : stay in state 1 - 2: if we encounter: * another style, then
+ * return * a character, then return * the same style: go in state 1
+ */
+ gregorio_character *current_char = first_character;
+ while (current_char) {
+ switch (state) {
+ case 0:
+ if (current_char->is_character)
+ return 0;
+ if (current_char->cos.s.style != ST_CENTER
+ && current_char->cos.s.style != ST_FORCED_CENTER
+ && current_char->cos.s.style != ST_SPECIAL_CHAR
+ && current_char->cos.s.style != ST_VERBATIM
+ && current_char->cos.s.style != ST_INITIAL) {
+ possible_fixed_style = current_char->cos.s.style;
+ state = 1;
+ }
+ break;
+ case 1:
+ if (!current_char->is_character) {
+ if (!current_char->is_character
+ && current_char->cos.s.style != ST_CENTER
+ && current_char->cos.s.style != ST_FORCED_CENTER
+ && current_char->cos.s.style != ST_INITIAL) {
+ state = 2;
+ } else if (current_char->cos.s.style != possible_fixed_style
+ && current_char->cos.s.style != ST_SPECIAL_CHAR
+ && current_char->cos.s.style != ST_VERBATIM)
+ return 0;
+ }
+ break;
+ case 2:
+ if (current_char->is_character)
+ return 0;
+ if (current_char->cos.s.style != ST_CENTER
+ && current_char->cos.s.style != ST_FORCED_CENTER
+ && current_char->cos.s.style != ST_SPECIAL_CHAR
+ && current_char->cos.s.style != ST_VERBATIM
+ && current_char->cos.s.style != ST_INITIAL) {
+ if (current_char->cos.s.style != possible_fixed_style) {
+ return 0;
+ } else {
+ state = 1;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ current_char = current_char->next_character;
+ }
+ /* if we reached here, this means that we there is only one style applied
+ * to all the syllables */
+ return possible_fixed_style;
+}
+
+/*
+ * @brief Writes the translation.
+ *
+ * There is no special handling of translation text; that is, we just print the
+ * entire string of text under the normal text line, without considering any
+ * special centering or linebreaks.
+ */
+static void gregoriotex_write_translation(FILE *f,
+ gregorio_character *translation)
+{
+ if (translation == NULL) {
+ return;
+ }
+ gregorio_write_text(false, translation, f,
+ (&gtex_write_verb),
+ (&gtex_print_char),
+ (&gtex_write_begin), (&gtex_write_end), (&gtex_write_special_char));
+}
+
+/* a function to compute the height of the flat of a key
+ * the flat is always on the line of the */
+
+static char gregoriotex_clef_flat_height(char step, int line)
+{
+ char offset = 6;
+ switch (step) {
+ case C_KEY:
+ switch (line) {
+ case 1:
+ offset = 2;
+ break;
+ case 2:
+ offset = 4;
+ break;
+ case 3:
+ offset = 6;
+ break;
+ case 4:
+ offset = 8;
+ break;
+ default:
+ gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR,
+ 0, _("unknown line number: %d"), line);
+ break;
+ }
+ break;
+ case F_KEY:
+ switch (line) {
+ case 1:
+ offset = 6;
+ break;
+ case 2:
+ offset = 8;
+ break;
+ case 3:
+ offset = 3;
+ break;
+ case 4:
+ offset = 5;
+ break;
+ default:
+ gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR,
+ 0, _("unknown line number: %d"), line);
+ break;
+ }
+ break;
+ default:
+ gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR, 0,
+ _("unknown clef type: %d"), step);
+ break;
+ }
+
+ return pitch_value(LOWEST_PITCH + offset);
+}
+
+OFFSET_CASE(BarStandard);
+OFFSET_CASE(BarVirgula);
+OFFSET_CASE(BarDivisioFinalis);
+
+static void gregoriotex_write_bar(FILE *f, gregorio_bar type,
+ gregorio_sign signs, bool is_inside_bar)
+{
+ /* the type number of function vepisemusorrare */
+ const char *offset_case = BarStandard;
+ if (is_inside_bar) {
+ fprintf(f, "\\GreIn");
+ } else {
+ fprintf(f, "\\Gre");
+ }
+ switch (type) {
+ case B_VIRGULA:
+ fprintf(f, "Virgula");
+ offset_case = BarVirgula;
+ break;
+ case B_DIVISIO_MINIMA:
+ fprintf(f, "DivisioMinima");
+ break;
+ case B_DIVISIO_MINOR:
+ fprintf(f, "DivisioMinor");
+ break;
+ case B_DIVISIO_MAIOR:
+ fprintf(f, "DivisioMaior");
+ break;
+ case B_DIVISIO_FINALIS:
+ fprintf(f, "DivisioFinalis");
+ offset_case = BarDivisioFinalis;
+ break;
+ case B_DIVISIO_MINOR_D1:
+ fprintf(f, "Dominica{1}");
+ break;
+ case B_DIVISIO_MINOR_D2:
+ fprintf(f, "Dominica{2}");
+ break;
+ case B_DIVISIO_MINOR_D3:
+ fprintf(f, "Dominica{3}");
+ break;
+ case B_DIVISIO_MINOR_D4:
+ fprintf(f, "Dominica{4}");
+ break;
+ case B_DIVISIO_MINOR_D5:
+ fprintf(f, "Dominica{5}");
+ break;
+ case B_DIVISIO_MINOR_D6:
+ fprintf(f, "Dominica{6}");
+ break;
+ default:
+ gregorio_messagef("gregoriotex_write_bar", VERBOSITY_ERROR, 0,
+ _("unknown bar type: %d"), type);
+ break;
+ }
+ switch (signs) {
+ case _V_EPISEMUS:
+ fprintf(f, "{\\GreBarVEpisemus{\\GreOCase%s}}%%\n", offset_case);
+ break;
+ case _BAR_H_EPISEMUS:
+ fprintf(f, "{\\GreBarBrace{\\GreOCase%s}}%%\n", offset_case);
+ break;
+ case _V_EPISEMUS_BAR_H_EPISEMUS:
+ fprintf(f, "{\\GreBarBrace{\\GreOCase%s}"
+ "\\GreBarVEpisemus{\\GreOCase%s}}%%\n",
+ offset_case, offset_case);
+ break;
+ default:
+ fprintf(f, "{}%%\n");
+ break;
+ }
+}
+
+/*
+ * ! @brief Writes augmentum duplexes (double dots) We suppose we are on the
+ * last note. \n The algorithm is the following: if there is a previous note,
+ * we consider that the two puncta of the augumentum duplex must correspond to
+ * the last note and the previous note. If we are adding to a single note
+ * glyph, which would be weird but sure why not, we just typeset two puncta
+ * spaced of 2.
+ */
+static void gregoriotex_write_auctum_duplex(FILE *f,
+ gregorio_note *current_note)
+{
+ char pitch = current_note->u.note.pitch;
+ char previous_pitch = 0;
+ /* second_pitch is the second argument of the \augmentumduplex macro,
+ * that's what this function is all about. */
+ char second_pitch = 0;
+ /* this variable will be set to 1 if we are on the note before the last
+ * note of a podatus or a porrectus or a torculus resupinus */
+ unsigned char special_punctum = 0;
+ if (current_note->previous) {
+ if (current_note->previous->u.note.pitch - current_note->u.note.pitch ==
+ -1
+ || current_note->previous->u.note.pitch -
+ current_note->u.note.pitch == 1) {
+ special_punctum = 1;
+ }
+ second_pitch = current_note->previous->u.note.pitch;
+ previous_pitch = second_pitch;
+ }
+
+ if (!previous_pitch || previous_pitch == pitch) {
+ if (is_on_a_line(pitch)) {
+ second_pitch = pitch;
+ special_punctum = 1;
+ } else {
+ second_pitch = pitch + 1;
+ }
+ }
+ /* the first argument should always be the lowest one, that's what we do
+ * here: */
+ if (pitch > second_pitch) {
+ previous_pitch = pitch;
+ pitch = second_pitch;
+ second_pitch = previous_pitch;
+ }
+ /* maybe the third argument should be changed */
+ fprintf(f, "\\GreAugmentumDuplex{%d}{%d}{%d}%%\n", pitch_value(pitch),
+ pitch_value(second_pitch), special_punctum);
+}
+
+/**
+ * @brief Adds a dot.
+ *
+ * Writes \c \\GrePunctumMora in the gtex file, with the appropriate arguments. You might think this function
+ * more straightforward than it actually is...
+ */
+static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph,
+ gregorio_note *current_note)
+{
+ /* in this if we consider that the puncta are only on the last two notes
+ * (maybe it would be useful to consider it more entirely, but it would be
+ * really weird...) */
+ /* the variable that will be set to true if we have to shift the punctum
+ * inclinatum before the last note */
+ bool shift_before = false;
+ /* this variable will be set to 1 if we are on the note before the last
+ * note of a podatus or a porrectus or a torculus resupinus */
+ unsigned char special_punctum = 0;
+ /* 0 if space is normal, 1 if there should be no space after a punctum */
+ unsigned char no_space = 0;
+ /* the pitch where to set the punctum */
+ char pitch = current_note->u.note.pitch;
+ /* a variable to know if we are on a punctum inclinatum or not */
+ unsigned char punctum_inclinatum = 0;
+ /* a temp variable */
+ gregorio_note *tmpnote;
+ /* we go into this switch only if it is the note before the last note */
+ if (current_note->next) {
+ switch (glyph->u.notes.glyph_type) {
+ case G_FLEXA:
+ case G_TORCULUS:
+ case G_TORCULUS_RESUPINUS_FLEXUS:
+ case G_PORRECTUS_FLEXUS:
+ if (glyph->u.notes.liquescentia != L_DEMINUTUS
+ && glyph->u.notes.liquescentia !=
+ L_DEMINUTUS_INITIO_DEBILIS) {
+ shift_before = true;
+ }
+ if (is_between_lines(pitch)
+ && pitch - current_note->next->u.note.pitch == 1) {
+ special_punctum = 2;
+ }
+ break;
+ case G_PODATUS:
+ if ((current_note->u.note.shape != S_PUNCTUM
+ && current_note->u.note.shape != S_QUILISMA)
+ || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS
+ || glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS
+ || glyph->u.notes.liquescentia ==
+ L_AUCTUS_ASCENDENS_INITIO_DEBILIS
+ || glyph->u.notes.liquescentia ==
+ L_AUCTUS_DESCENDENS_INITIO_DEBILIS) {
+ shift_before = true;
+ /* fine tuning */
+ if (current_note->next->u.note.pitch -
+ current_note->u.note.pitch == 1) {
+ if (is_on_a_line(current_note->u.note.pitch)) {
+ special_punctum = 1;
+ } else {
+ pitch = current_note->u.note.pitch - 1;
+ }
+ }
+ } else {
+ /* case for f.g */
+ if (current_note->next->u.note.pitch -
+ current_note->u.note.pitch == 1) {
+ special_punctum = 1;
+ }
+ }
+ break;
+ case G_PES_QUADRATUM:
+ shift_before = true;
+ if (current_note->next->u.note.pitch - current_note->u.note.pitch ==
+ 1) {
+ if (is_on_a_line(current_note->u.note.pitch)) {
+ special_punctum = 1;
+ } else {
+ pitch = current_note->u.note.pitch - 1;
+ }
+ }
+ break;
+ case G_PORRECTUS:
+ case G_TORCULUS_RESUPINUS:
+ /* this case is only for the note before the previous note */
+ if ((current_note->next->u.note.pitch -
+ current_note->u.note.pitch == -1
+ || current_note->next->u.note.pitch -
+ current_note->u.note.pitch == 1)
+ && !(current_note->next->next))
+ special_punctum = 1;
+ break;
+ default:
+ break;
+ }
+ }
+ /* we enter here in any case */
+ switch (glyph->u.notes.glyph_type) {
+ case G_TRIGONUS:
+ case G_PUNCTA_INCLINATA:
+ case G_2_PUNCTA_INCLINATA_DESCENDENS:
+ case G_3_PUNCTA_INCLINATA_DESCENDENS:
+ case G_4_PUNCTA_INCLINATA_DESCENDENS:
+ case G_5_PUNCTA_INCLINATA_DESCENDENS:
+ case G_TORCULUS:
+ if (!current_note->next) {
+ special_punctum = 1;
+ }
+ break;
+ default:
+ break;
+ }
+ if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) {
+ punctum_inclinatum = 1;
+ }
+ if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM_DEMINUTUS) {
+ punctum_inclinatum = 1;
+ }
+ /* when the punctum mora is on a note on a line, and the prior note is on
+ * the space immediately above, the dot is placed on the space below the
+ * line instead */
+ if (current_note->previous
+ && (current_note->previous->u.note.pitch -
+ current_note->u.note.pitch == 1)
+ && is_on_a_line(current_note->u.note.pitch)
+ && (current_note->previous->signs == _PUNCTUM_MORA
+ || current_note->previous->signs == _V_EPISEMUS_PUNCTUM_MORA
+ || current_note->previous->choral_sign)) {
+ special_punctum = 1;
+ }
+
+ if (current_note->mora_vposition) {
+ special_punctum = current_note->mora_vposition == VPOS_BELOW? 1 : 0;
+ }
+
+ if (shift_before) {
+ if (current_note->next->u.note.pitch - current_note->u.note.pitch == -1
+ || current_note->next->u.note.pitch -
+ current_note->u.note.pitch == 1) {
+ fprintf(f, "\\GrePunctumMora{%d}{3}{%d}{%d}%%\n",
+ pitch_value(pitch), special_punctum, punctum_inclinatum);
+ } else {
+ fprintf(f, "\\GrePunctumMora{%d}{2}{%d}{%d}%%\n",
+ pitch_value(pitch), special_punctum, punctum_inclinatum);
+ }
+ return;
+ }
+ /* There are two special cases. The first: if the next glyph is a
+ * ZERO_WIDTH_SPACE, and the current glyph is a PES, and the punctum mora
+ * is on the first note, and the first note of the next glyph is at least
+ * two (or three depending on something) pitches higher than the current
+ * note.
+ * You'll all have understood, this case is quite rare... but when it
+ * appears, we pass 1 as a second argument of \punctummora so that it
+ * removes the space introduced by the punctummora. */
+ if (glyph->u.notes.glyph_type == G_PODATUS && glyph->next
+ && glyph->next->type == GRE_SPACE
+ && current_note->next && glyph->next->next
+ && glyph->next->next->type == GRE_GLYPH
+ && glyph->next->next->u.notes.first_note
+ && (glyph->next->next->u.notes.first_note->u.note.pitch -
+ current_note->u.note.pitch > 1)) {
+ fprintf(f, "\\GrePunctumMora{%d}{1}{%d}{%d}%%\n", pitch_value(pitch),
+ special_punctum, punctum_inclinatum);
+ return;
+ }
+ /* if there is a punctum or a auctum dumplex on a note after, we put a
+ * zero-width punctum */
+ tmpnote = current_note->next;
+ while (tmpnote) {
+ if (tmpnote->signs == _PUNCTUM_MORA || tmpnote->signs == _AUCTUM_DUPLEX
+ || tmpnote->signs == _V_EPISEMUS_PUNCTUM_MORA
+ || tmpnote->signs == _V_EPISEMUS_AUCTUM_DUPLEX
+ || tmpnote->choral_sign) {
+ no_space = 1;
+ break;
+ }
+ tmpnote = tmpnote->next;
+ }
+
+ /* the normal operation */
+ fprintf(f, "\\GrePunctumMora{%d}{%d}{%d}{%d}%%\n", pitch_value(pitch),
+ no_space, special_punctum, punctum_inclinatum);
+}
+
+static __inline int get_punctum_inclinatum_space_case(
+ const gregorio_note *const note)
+{
+ char temp;
+
+ switch (note->u.note.shape) {
+ case S_PUNCTUM_INCLINATUM:
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ if (note->previous) {
+ /* means that it is the first note of the puncta inclinata
+ * sequence */
+ temp = note->previous->u.note.pitch - note->u.note.pitch;
+ /* if (temp < -1 || temp > 1) */
+ switch (temp) {
+ /* we switch on the range of the inclinata this will look
+ * somewhat strange if temp is negative... to be aligned
+ * then, */
+ case -2:
+ case 2:
+ return 10;
+ case -3:
+ case 3:
+ return 11;
+ case -4:
+ case 4:
+ /* not sure we ever need to consider a larger ambitus here */
+ return 11;
+ default:
+ return 3;
+ break;
+ }
+ }
+ break;
+ case S_PUNCTUM_INCLINATUM_DEMINUTUS:
+ if (note->previous) {
+ /* means that it is the first note of the puncta inclinata
+ * sequence */
+ temp = note->previous->u.note.pitch - note->u.note.pitch;
+ if (temp < -2 || temp > 2) {
+ return 11;
+ } else {
+ if (note->previous
+ && note->previous->u.note.shape ==
+ S_PUNCTUM_INCLINATUM_DEMINUTUS) {
+ if (temp < -1 || temp > 1) {
+ /* really if the ambitus = 3rd at this point */
+ return 10;
+ } else {
+ return 8;
+ }
+ } else {
+ /* puncta inclinatum followed by puncta inclinatum
+ * debilis */
+ return 7;
+ }
+ }
+ }
+ break;
+ case S_PUNCTUM_INCLINATUM_AUCTUS:
+ case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS:
+ if (note->previous) {
+ /* means that it is the first note of the puncta inclinata
+ * sequence */
+ temp = note->previous->u.note.pitch - note->u.note.pitch;
+ if (temp < -1 || temp > 1) {
+ return 1;
+ } else {
+ /* we approximate that it is the same space */
+ return 3;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return -1;
+}
+
+static __inline void write_single_hepisemus(FILE *const f, int hepisemus_case,
+ const gregorio_note *const note, bool connect, char height,
+ const grehepisemus_size size, const int i,
+ const gregorio_glyph *const glyph,
+ const int porrectus_long_episemus_index,
+ bool (*const is_episemus_shown)(const gregorio_note *))
+{
+ char ambitus = 0;
+ char size_arg;
+
+ if (height) {
+ switch (size) {
+ case H_SMALL_LEFT:
+ size_arg = 'l';
+ connect = false;
+ break;
+ case H_SMALL_CENTRE:
+ size_arg = 'c';
+ connect = false;
+ break;
+ case H_SMALL_RIGHT:
+ size_arg = 'r';
+ break;
+ default:
+ size_arg = 'f';
+ break;
+ }
+
+ if (i == porrectus_long_episemus_index && note->next
+ && is_episemus_shown(note->next)) {
+ ambitus = compute_ambitus(note);
+ }
+
+ if (i - 1 != porrectus_long_episemus_index || !note->previous
+ || !is_episemus_shown(note->previous)) {
+ if (connect) {
+ if (!note->next && (!glyph->next
+ || glyph->next->type != GRE_SPACE
+ || glyph->next->u.misc.unpitched.info.space
+ != SP_ZERO_WIDTH)) {
+ /* not followed by a zero-width space */
+ fprintf(f, "\\GreHEpisemusBridge{%d}{%d}{-1}%%\n",
+ pitch_value(height), hepisemus_case);
+ } else if (note->next
+ && (note->next->u.note.shape == S_PUNCTUM_INCLINATUM
+ || note->next->u.note.shape
+ == S_PUNCTUM_INCLINATUM_DEMINUTUS
+ || note->next->u.note.shape
+ == S_PUNCTUM_INCLINATUM_AUCTUS)) {
+ /* is a punctum inclinatum of some sort */
+ fprintf(f, "\\GreHEpisemusBridge{%d}{%d}{%d}%%\n",
+ pitch_value(height), hepisemus_case,
+ get_punctum_inclinatum_space_case(note->next));
+ }
+ }
+ fprintf(f, "\\GreHEpisemus{%d}{\\GreOCase%s}{%d}{%d}{%c}{%d}%%\n",
+ pitch_value(height), note->gtex_offset_case, ambitus,
+ hepisemus_case, size_arg, pitch_value(height));
+ }
+ }
+}
+
+/**
+ * @brief A function that writes the good \c \\hepisemus in GregorioTeX.
+ * @param i The position of the note in the glyph.
+ */
+static void gregoriotex_write_hepisemus(FILE *const f,
+ const gregorio_note *const note, const int i, const gtex_type type,
+ const gregorio_glyph *const glyph)
+{
+ int porrectus_long_episemus_index = -1;
+
+ if (!note) {
+ return;
+ }
+
+ switch (type) {
+ case T_PORRECTUS:
+ case T_PORRECTUS_FLEXUS:
+ porrectus_long_episemus_index = 1;
+ break;
+ case T_TORCULUS_RESUPINUS:
+ case T_TORCULUS_RESUPINUS_FLEXUS:
+ porrectus_long_episemus_index = 2;
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+
+ write_single_hepisemus(f, 1, note, note->h_episemus_below_connect,
+ note->h_episemus_below, note->h_episemus_below_size, i, glyph,
+ porrectus_long_episemus_index, &gtex_is_h_episemus_below_shown);
+ write_single_hepisemus(f, 0, note, note->h_episemus_above_connect,
+ note->h_episemus_above, note->h_episemus_above_size, i, glyph,
+ porrectus_long_episemus_index, &gtex_is_h_episemus_above_shown);
+}
+
+/* a macro to write an additional line */
+
+static void gregoriotex_write_additional_line(FILE *f,
+ int i, gtex_type type, bool bottom,
+ gregorio_note *current_note)
+{
+ char ambitus = 0;
+ if (!current_note) {
+ gregorio_message(_("called with no note"),
+ "gregoriotex_write_additional_line", VERBOSITY_ERROR, 0);
+ return;
+ }
+ /* patch to get a line under the full glyph in the case of dbc (for
+ * example) */
+ switch (type) {
+ case T_PORRECTUS:
+ case T_PORRECTUS_FLEXUS:
+ if (i == 1) {
+ i = HEPISEMUS_FIRST_TWO;
+ }
+ if (i == 2) {
+ if (current_note->previous->u.note.pitch >= PITCH_BELOW_STAFF
+ && current_note->previous->u.note.pitch
+ <= PITCH_ABOVE_STAFF) {
+ i = HEPISEMUS_FIRST_TWO;
+ /* HEPISEMUS_FIRST_TWO works only for first note */
+ current_note = current_note->previous;
+ } else {
+ return;
+ }
+ }
+ if (i == 3) {
+ if (bottom || current_note->previous->u.note.pitch
+ > PITCH_ABOVE_STAFF) {
+ /* we don't need to add twice the same line */
+ return;
+ }
+ }
+ break;
+ case T_TORCULUS_RESUPINUS:
+ case T_TORCULUS_RESUPINUS_FLEXUS:
+ if (i == 2) {
+ i = HEPISEMUS_FIRST_TWO;
+ }
+ if (i == 3) {
+ if (current_note->previous->u.note.pitch >= PITCH_BELOW_STAFF
+ && current_note->previous->u.note.pitch
+ <= PITCH_ABOVE_STAFF) {
+ i = HEPISEMUS_FIRST_TWO;
+ /* HEPISEMUS_FIRST_TWO works only for first note */
+ current_note = current_note->previous;
+ } else {
+ return;
+ }
+ }
+ if (i == 4) {
+ if (bottom || current_note->previous->u.note.pitch
+ > PITCH_ABOVE_STAFF) {
+ /* we don't need to add twice the same line */
+ return;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (i == HEPISEMUS_FIRST_TWO) {
+ /* here we must compare the first note of the big bar with the second
+ * one, but it may be tricky sometimes, because of the previous patch */
+ if (current_note->previous &&
+ current_note->previous->u.note.pitch >
+ current_note->u.note.pitch) {
+ ambitus = current_note->previous->u.note.pitch -
+ current_note->u.note.pitch;
+ } else {
+ ambitus = current_note->u.note.pitch -
+ current_note->next->u.note.pitch;
+ }
+ }
+ fprintf(f, "\\GreAdditionalLine{\\GreOCase%s}{%d}{%d}%%\n",
+ current_note->gtex_offset_case, ambitus, bottom ? 3 : 2);
+}
+
+/*
+ *
+ * a function that writes the good value of \vepisemus in GregorioTeX. i is the
+ * position of the note in the glyph
+ *
+ */
+
+static void gregoriotex_write_vepisemus(FILE *f, gregorio_note *note)
+{
+ fprintf(f, "\\GreVEpisemus{%d}{\\GreOCase%s}%%\n",
+ pitch_value(note->v_episemus_height), note->gtex_offset_case);
+}
+
+/*
+ * a function that writes the rare signs in GregorioTeX. i is the position of
+ * the note in the glyph */
+
+static void gregoriotex_write_rare(FILE *f, gregorio_note *current_note,
+ gregorio_sign rare)
+{
+ switch (rare) {
+ case _ACCENTUS:
+ fprintf(f, "\\GreAccentus{%d}{\\GreOCase%s}%%\n",
+ pitch_value(current_note->u.note.pitch),
+ current_note->gtex_offset_case);
+ break;
+ case _ACCENTUS_REVERSUS:
+ fprintf(f, "\\GreReversedAccentus{%d}{\\GreOCase%s}%%\n",
+ pitch_value(current_note->u.note.pitch),
+ current_note->gtex_offset_case);
+ break;
+ case _CIRCULUS:
+ fprintf(f, "\\GreCirculus{%d}{\\GreOCase%s}%%\n",
+ pitch_value(current_note->u.note.pitch),
+ current_note->gtex_offset_case);
+ break;
+ case _SEMI_CIRCULUS:
+ fprintf(f, "\\GreSemicirculus{%d}{\\GreOCase%s}%%\n",
+ pitch_value(current_note->u.note.pitch),
+ current_note->gtex_offset_case);
+ break;
+ case _SEMI_CIRCULUS_REVERSUS:
+ fprintf(f, "\\GreReversedSemicirculus{%d}{\\GreOCase%s}%%\n",
+ pitch_value(current_note->u.note.pitch),
+ current_note->gtex_offset_case);
+ break;
+ /* the cases of the bar signs are dealt in another function
+ * (write_bar) */
+ default:
+ break;
+ }
+}
+
+/*
+ * function used when the glyph is only one note long
+ */
+
+static void gregoriotex_write_note(FILE *f, gregorio_note *note,
+ gregorio_glyph *glyph, gregorio_element *element, char next_note_pitch)
+{
+ unsigned int initial_shape = note->u.note.shape;
+ const char *shape;
+ int space_case;
+ /* type in the sense of GregorioTeX alignment type */
+ gtex_alignment type = AT_ONE_NOTE;
+ if (!note) {
+ gregorio_message(_
+ ("called with NULL pointer"),
+ "gregoriotex_write_note", VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (note->u.note.shape == S_PUNCTUM
+ && note->u.note.liquescentia != L_NO_LIQUESCENTIA) {
+ switch (note->u.note.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ note->u.note.shape = S_PUNCTUM_AUCTUS_ASCENDENS;
+ break;
+ case L_AUCTUS_DESCENDENS:
+ case L_AUCTA:
+ note->u.note.shape = S_PUNCTUM_AUCTUS_DESCENDENS;
+ break;
+ case L_DEMINUTUS:
+ case L_INITIO_DEBILIS:
+ note->u.note.shape = S_PUNCTUM_DEMINUTUS;
+ default:
+ break;
+ }
+ }
+ shape = gregoriotex_determine_note_glyph_name(note, glyph, element, &type);
+ note->u.note.shape = initial_shape;
+ /* special things for puncta inclinata */
+ space_case = get_punctum_inclinatum_space_case(note);
+ if (space_case >= 0) {
+ fprintf(f, "\\GreEndOfGlyph{%d}%%\n", space_case);
+ }
+
+ switch (note->u.note.shape) {
+ case S_PUNCTUM_CAVUM:
+ fprintf(f, "\\GrePunctumCavum{%d}{%d}{%d}",
+ pitch_value(note->u.note.pitch), pitch_value(next_note_pitch),
+ type);
+ break;
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ fprintf(f, "\\GrePunctumCavumInclinatum{%d}{%d}{%d}",
+ pitch_value(note->u.note.pitch), pitch_value(next_note_pitch),
+ type);
+ break;
+ case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS:
+ fprintf(f, "\\GrePunctumCavumInclinatumAuctus{%d}{%d}{%d}",
+ pitch_value(note->u.note.pitch), pitch_value(next_note_pitch),
+ type);
+ break;
+ case S_LINEA_PUNCTUM_CAVUM:
+ fprintf(f, "\\GreLineaPunctumCavum{%d}{%d}{%d}",
+ pitch_value(note->u.note.pitch), pitch_value(next_note_pitch),
+ type);
+ break;
+ case S_LINEA:
+ fprintf(f, "\\GreLinea{%d}{%d}{%d}", pitch_value(note->u.note.pitch),
+ pitch_value(next_note_pitch), type);
+ break;
+ default:
+ fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape,
+ pitch_value(note->u.note.pitch), pitch_value(next_note_pitch),
+ type);
+ break;
+ }
+}
+
+static int gregoriotex_syllable_first_type(gregorio_syllable *syllable)
+{
+ int result = 0;
+ gtex_alignment type = AT_ONE_NOTE;
+ gtex_type gtype = T_ONE_NOTE;
+ /* alteration says if there is a flat or a natural first in the next
+ * syllable, see gregoriotex.tex for more details */
+ int alteration = 0;
+ gregorio_glyph *glyph;
+ gregorio_element *element;
+ if (!syllable) {
+ gregorio_message(_("called with a NULL argument"),
+ "gregoriotex_syllable_first_type", VERBOSITY_ERROR, 0);
+ }
+ element = syllable->elements[0];
+ while (element) {
+ if (element->type == GRE_BAR) {
+ switch (element->u.misc.unpitched.info.bar) {
+ case B_NO_BAR:
+ case B_VIRGULA:
+ result = 10;
+ break;
+ case B_DIVISIO_MINIMA:
+ case B_DIVISIO_MINOR:
+ case B_DIVISIO_MAIOR:
+ case B_DIVISIO_MINOR_D1:
+ case B_DIVISIO_MINOR_D2:
+ case B_DIVISIO_MINOR_D3:
+ case B_DIVISIO_MINOR_D4:
+ case B_DIVISIO_MINOR_D5:
+ case B_DIVISIO_MINOR_D6:
+ result = 11;
+ break;
+ case B_DIVISIO_FINALIS:
+ result = 12;
+ break;
+ default:
+ result = 0;
+ break;
+ }
+ return result;
+ }
+ if (element->type == GRE_ELEMENT && element->u.first_glyph) {
+ glyph = element->u.first_glyph;
+ while (glyph) {
+ if (alteration == 0) {
+ switch (glyph->type) {
+ case GRE_FLAT:
+ alteration = 20;
+ break;
+ case GRE_NATURAL:
+ alteration = 40;
+ break;
+ case GRE_SHARP:
+ alteration = 60;
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+ }
+ if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) {
+ switch (glyph->u.notes.glyph_type) {
+ case G_TRIGONUS:
+ case G_PUNCTA_INCLINATA:
+ case G_2_PUNCTA_INCLINATA_DESCENDENS:
+ case G_3_PUNCTA_INCLINATA_DESCENDENS:
+ case G_4_PUNCTA_INCLINATA_DESCENDENS:
+ case G_5_PUNCTA_INCLINATA_DESCENDENS:
+ case G_2_PUNCTA_INCLINATA_ASCENDENS:
+ case G_3_PUNCTA_INCLINATA_ASCENDENS:
+ case G_4_PUNCTA_INCLINATA_ASCENDENS:
+ case G_5_PUNCTA_INCLINATA_ASCENDENS:
+ case G_PUNCTUM:
+ case G_STROPHA:
+ case G_VIRGA:
+ case G_VIRGA_REVERSA:
+ case G_STROPHA_AUCTA:
+ case G_DISTROPHA:
+ case G_DISTROPHA_AUCTA:
+ case G_TRISTROPHA:
+ case G_TRISTROPHA_AUCTA:
+ case G_BIVIRGA:
+ case G_TRIVIRGA:
+ gregoriotex_determine_note_glyph_name
+ (glyph->u.notes.first_note, glyph, element,
+ &type);
+ break;
+ default:
+ gregoriotex_determine_glyph_name(glyph, element, &type,
+ &gtype);
+ break;
+ }
+ return type + alteration;
+ }
+ glyph = glyph->next;
+ }
+ }
+ element = element->next;
+ }
+ return 0;
+}
+
+static __inline void write_low_choral_sign(FILE *const f,
+ const gregorio_note *const note, int special)
+{
+ fprintf(f, "\\GreLowChoralSign{%d}{%s%s%s}{%d}%%\n",
+ pitch_value(note->u.note.pitch),
+ note->choral_sign_is_nabc? "\\GreNABCChar{" : "",
+ note->choral_sign, note->choral_sign_is_nabc? "}" : "", special);
+}
+
+static __inline void write_high_choral_sign(FILE *const f,
+ const gregorio_note *const note, int pitch_offset)
+{
+ fprintf(f, "\\GreHighChoralSign{%d}{%s%s%s}{\\GreOCase%s}%%\n",
+ pitch_value(note->u.note.pitch + pitch_offset),
+ note->choral_sign_is_nabc? "\\GreNABCChar{" : "",
+ note->choral_sign, note->choral_sign_is_nabc? "}" : "",
+ note->gtex_offset_case);
+}
+
+static void gregoriotex_write_choral_sign(FILE *f, gregorio_glyph *glyph,
+ gregorio_note *current_note, bool low)
+{
+ bool kind_of_pes;
+ /* false in the normal case (sign above the note), true in the case of it's
+ * next to the note (same height as a punctum) */
+ bool low_sign = choral_sign_here_is_low(glyph, current_note, &kind_of_pes);
+
+ /* the low choral signs must be typeset after the punctum, whereas the high
+ * must be typeset before the h episemus */
+ if ((low_sign && !low) || (!low_sign && low)) {
+ return;
+ }
+
+ if (low_sign) {
+ /* very approximative heuristic, some things may have to be adapted
+ * here... */
+ if (is_on_a_line(current_note->u.note.pitch)) {
+ if (kind_of_pes && current_note->u.note.pitch -
+ current_note->next->u.note.pitch == -1) {
+ write_low_choral_sign(f, current_note, 1);
+ return;
+ }
+ if (current_note->previous
+ && (current_note->previous->signs == _PUNCTUM_MORA
+ || current_note->previous->signs ==
+ _V_EPISEMUS_PUNCTUM_MORA)) {
+ write_low_choral_sign(f, current_note, 1);
+ return;
+ }
+ }
+
+ write_low_choral_sign(f, current_note, 0);
+ } else {
+ /* let's cheat a little */
+ if (is_on_a_line(current_note->u.note.pitch)) {
+ write_high_choral_sign(f, current_note, 0);
+ } else {
+ write_high_choral_sign(f, current_note, 2);
+ }
+ }
+}
+
+/*
+ *
+ * A function that write the signs of a glyph, which has the type type (T_*,
+ * not G_*, which is in the glyph->glyph_type), and (important), we start only
+ * at the note current_note. It is due to the way we call it : if type is
+ * T_ONE_NOTE, we just do the signs on current_note, not all. This is the case
+ * for example for the first note of the torculus resupinus, or the
+ * G_*_PUNCTA_INCLINATA.
+ *
+ */
+
+/* small helper */
+static __inline bool _found(FILE *const f, const bool found)
+{
+ if (!found) {
+ fprintf (f, "%%\n");\
+ return true;
+ }
+ return found;
+}
+
+static void compute_height_extrema(const gregorio_glyph *const glyph,
+ const gregorio_note *note, signed char *const top_height,
+ signed char *const bottom_height)
+{
+ char height;
+ /* get the minima/maxima pitches */
+ for (; note; note = note->next) {
+ if (note->h_episemus_above) {
+ height = note->h_episemus_above;
+ } else {
+ if (note->v_episemus_height && note->v_episemus_height
+ > note->u.note.pitch) {
+ height = note->v_episemus_height;
+ } else {
+ height = note->u.note.pitch;
+ }
+
+ if (note->choral_sign
+ && !choral_sign_here_is_low(glyph, note, NULL)) {
+ ++height;
+ }
+ }
+ if (*top_height == UNDETERMINED_HEIGHT || height > *top_height) {
+ *top_height = height;
+ }
+
+ if (note->h_episemus_below) {
+ height = note->h_episemus_below;
+ } else if (note->v_episemus_height && note->v_episemus_height
+ < note->u.note.pitch) {
+ height = note->v_episemus_height;
+ } else {
+ height = note->u.note.pitch;
+ }
+ if (*bottom_height == UNDETERMINED_HEIGHT || height < *bottom_height) {
+ *bottom_height = height;
+ }
+ }
+}
+
+static __inline void fixup_height_extrema(signed char *const top_height,
+ signed char *const bottom_height)
+{
+ if (*top_height == UNDETERMINED_HEIGHT) {
+ *top_height = 9; /* 'g' */
+ }
+ if (*bottom_height == UNDETERMINED_HEIGHT) {
+ *bottom_height = 9; /* 'g' */
+ }
+}
+
+static void gregoriotex_write_signs(FILE *f, gtex_type type,
+ gregorio_glyph *glyph, gregorio_note *note,
+ gregoriotex_status *const status)
+{
+ /* i is the number of the note for which we are typesetting the sign. */
+ int i;
+ gregorio_note *current_note;
+ /* a dumb char */
+ char block_hepisemus = 0;
+ signed char high_pitch = UNDETERMINED_HEIGHT;
+ signed char low_pitch = UNDETERMINED_HEIGHT;
+ bool found = false;
+ compute_height_extrema(glyph, note, &high_pitch, &low_pitch);
+ fixup_height_extrema(&high_pitch, &low_pitch);
+ fprintf(f, "%%\n{%%\n\\GreGlyphHeights{%d}{%d}%%\n",
+ pitch_value(high_pitch), pitch_value(low_pitch));
+ for (current_note = note, i = 1; current_note;
+ current_note = current_note->next, ++i) {
+ /* we start by the additional lines */
+ if (current_note->u.note.pitch < PITCH_BELOW_STAFF) {
+ gregoriotex_write_additional_line(f, i, type, true, current_note);
+ status->bottom_line = 1;
+ }
+ if (current_note->u.note.pitch > PITCH_ABOVE_STAFF) {
+ gregoriotex_write_additional_line(f, i, type, false, current_note);
+ }
+ if (current_note->texverb) {
+ fprintf(f, "%% verbatim text at note level:\n%s%%\n"
+ "%% end of verbatim text\n", current_note->texverb);
+ }
+ if (type == T_ONE_NOTE) {
+ break;
+ }
+ }
+ fprintf(f, "}{");
+ /* now a first loop for the choral signs, because high signs must be taken
+ * into account before any hepisemus */
+ for (current_note = note, i = 1; current_note;
+ current_note = current_note->next, ++i) {
+ if (current_note->choral_sign) {
+ found = _found(f, found);
+ gregoriotex_write_choral_sign(f, glyph, current_note, false);
+ }
+ if (type == T_ONE_NOTE) {
+ break;
+ }
+ }
+ /* a loop for rare signs, vertical episemus, and horizontal episemus */
+ for (current_note = note, i = 1; current_note;
+ current_note = current_note->next, ++i) {
+ /* we continue with the hepisemus */
+ if (current_note->h_episemus_above || current_note->h_episemus_below) {
+ found = _found(f, found);
+ gregoriotex_write_hepisemus(f, current_note, i, type, glyph);
+ }
+ /* write_rare also writes the vepisemus */
+ if (current_note->special_sign) {
+ found = _found(f, found);
+ gregoriotex_write_rare(f, current_note, current_note->special_sign);
+ }
+ if (current_note->signs != _NO_SIGN) {
+ found = _found(f, found);
+ }
+ switch (current_note->signs) {
+ case _V_EPISEMUS:
+ case _V_EPISEMUS_PUNCTUM_MORA:
+ case _V_EPISEMUS_AUCTUM_DUPLEX:
+ gregoriotex_write_vepisemus(f, current_note);
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+ /* why is this if there?... */
+ if (!current_note->special_sign) {
+ if (block_hepisemus == 2) {
+ block_hepisemus = 0;
+ }
+ if (block_hepisemus == 1) {
+ block_hepisemus = 2;
+ }
+ }
+ if (type == T_ONE_NOTE) {
+ break;
+ }
+ }
+ /* final loop for choral signs and punctum mora */
+ for (current_note = note, i = 1; current_note;
+ current_note = current_note->next, ++i) {
+ switch (current_note->signs) {
+ case _PUNCTUM_MORA:
+ case _V_EPISEMUS_PUNCTUM_MORA:
+ gregoriotex_write_punctum_mora(f, glyph, current_note);
+ break;
+ case _AUCTUM_DUPLEX:
+ case _V_EPISEMUS_AUCTUM_DUPLEX:
+ gregoriotex_write_auctum_duplex(f, current_note);
+ break;
+ default:
+ break;
+ }
+ if (current_note->choral_sign) {
+ found = _found(f, found);
+ gregoriotex_write_choral_sign(f, glyph, current_note, true);
+ }
+ if (type == T_ONE_NOTE) {
+ break;
+ }
+ }
+ fprintf(f, "}{");
+ if (status->point_and_click) {
+ fprintf(f, "%u:%u:%u", note->src_line, note->src_offset,
+ note->src_column + 1);
+ }
+ fprintf(f, "}%%\n");
+}
+
+static char *determine_leading_shape(gregorio_glyph *glyph)
+{
+ static char buf[BUFSIZE];
+ int ambitus = compute_ambitus(glyph->u.notes.first_note);
+ const char *head, *head_liquescence;
+
+ switch (glyph->u.notes.first_note->u.note.shape) {
+ case S_QUILISMA:
+ head = "Quilisma";
+ break;
+ case S_ORISCUS:
+ case S_ORISCUS_SCAPUS:
+ head = "Oriscus";
+ break;
+ default:
+ head = "Punctum";
+ break;
+ }
+
+ switch (glyph->u.notes.liquescentia) {
+ case L_INITIO_DEBILIS:
+ case L_DEMINUTUS_INITIO_DEBILIS:
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ case L_AUCTA_INITIO_DEBILIS:
+ head_liquescence = "InitioDebilis";
+ break;
+ default:
+ head_liquescence = "";
+ break;
+ }
+
+ gregorio_snprintf(buf, BUFSIZE, "Leading%s%s%s", head, tex_ambitus[ambitus],
+ head_liquescence);
+ return buf;
+}
+
+static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable,
+ gregorio_element *element, gregorio_glyph *glyph,
+ gregoriotex_status *const status)
+{
+ /* glyph number is the number of the glyph in the fonte, it is discussed in
+ * later comments
+ * type is the type of the glyph. Understand the type of the glyph for
+ * gregoriotex, for the alignement between text and notes. (AT_ONE_NOTE,
+ * etc.) */
+ gtex_alignment type = 0;
+ /* the type of the glyph, in the sense of the shape (T_PES, etc.) */
+ gtex_type gtype = 0;
+ char next_note_pitch = 0;
+ gregorio_note *current_note;
+ const char *leading_shape, *shape;
+ if (!glyph) {
+ gregorio_message(_("called with NULL pointer"),
+ "gregoriotex_write_glyph", VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (glyph->type != GRE_GLYPH || !glyph->u.notes.first_note) {
+ gregorio_message(_("called with glyph without note"),
+ "gregoriotex_write_glyph", VERBOSITY_ERROR, 0);
+ return;
+ }
+ next_note_pitch = gregorio_determine_next_pitch(syllable, element, glyph);
+ current_note = glyph->u.notes.first_note;
+ /* first we check if it is really a unique glyph in gregoriotex... the
+ * glyphs that are not a unique glyph are : trigonus and pucta inclinata
+ * in general, and torculus resupinus and torculus resupinus flexus, so
+ * we first divide the glyph into real gregoriotex glyphs */
+ switch (glyph->u.notes.glyph_type) {
+ case G_TRIGONUS:
+ case G_PUNCTA_INCLINATA:
+ case G_2_PUNCTA_INCLINATA_DESCENDENS:
+ case G_3_PUNCTA_INCLINATA_DESCENDENS:
+ case G_4_PUNCTA_INCLINATA_DESCENDENS:
+ case G_5_PUNCTA_INCLINATA_DESCENDENS:
+ case G_2_PUNCTA_INCLINATA_ASCENDENS:
+ case G_3_PUNCTA_INCLINATA_ASCENDENS:
+ case G_4_PUNCTA_INCLINATA_ASCENDENS:
+ case G_5_PUNCTA_INCLINATA_ASCENDENS:
+ while (current_note) {
+ gregoriotex_write_note(f, current_note, glyph, element,
+ next_note_pitch);
+ gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status);
+ current_note = current_note->next;
+ }
+ break;
+ case G_SCANDICUS:
+ if (glyph->u.notes.liquescentia == L_DEMINUTUS
+ || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS
+ || glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA) {
+ shape = gregoriotex_determine_glyph_name(glyph, element, &type,
+ &gtype);
+ fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape,
+ pitch_value(glyph->u.notes.first_note->u.note.pitch),
+ pitch_value(next_note_pitch), type);
+ gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note,
+ status);
+ } else {
+ while (current_note) {
+ gregoriotex_write_note(f, current_note, glyph, element,
+ next_note_pitch);
+ gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note,
+ status);
+ current_note = current_note->next;
+ }
+ }
+ break;
+ case G_ANCUS:
+ if (glyph->u.notes.liquescentia == L_DEMINUTUS
+ || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS) {
+ shape = gregoriotex_determine_glyph_name(glyph, element, &type,
+ &gtype);
+ fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape,
+ pitch_value(glyph->u.notes.first_note->u.note.pitch),
+ pitch_value(next_note_pitch), type);
+ gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note,
+ status);
+ } else {
+ while (current_note) {
+ gregoriotex_write_note(f, current_note, glyph, element,
+ next_note_pitch);
+ gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note,
+ status);
+ current_note = current_note->next;
+ }
+ }
+ break;
+ case G_TORCULUS_RESUPINUS_FLEXUS:
+ leading_shape = determine_leading_shape(glyph);
+ /* trick to have the good position for these glyphs */
+ glyph->u.notes.glyph_type = G_PORRECTUS_FLEXUS_NO_BAR;
+ glyph->u.notes.first_note = current_note->next;
+ shape = gregoriotex_determine_glyph_name(glyph, element, &type, &gtype);
+ fprintf(f, "\\GreGlyph{\\GreFuseTwo{\\GreCP%s}{\\GreCP%s}}{%d}{%d}{%d}",
+ leading_shape, shape,
+ pitch_value(glyph->u.notes.first_note->u.note.pitch),
+ pitch_value(next_note_pitch), type);
+ glyph->u.notes.first_note = current_note;
+ glyph->u.notes.glyph_type = G_TORCULUS_RESUPINUS_FLEXUS;
+ gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note,
+ status);
+ break;
+ case G_BIVIRGA:
+ case G_TRIVIRGA:
+ while (current_note) {
+ gregoriotex_write_note(f, current_note, glyph, element,
+ next_note_pitch);
+ gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status);
+ current_note = current_note->next;
+ if (current_note) {
+ fprintf(f, "\\GreEndOfGlyph{4}%%\n");
+ }
+ }
+ break;
+ case G_TRISTROPHA:
+ case G_TRISTROPHA_AUCTA:
+ case G_DISTROPHA:
+ case G_DISTROPHA_AUCTA:
+ while (current_note) {
+ gregoriotex_write_note(f, current_note, glyph, element,
+ next_note_pitch);
+ gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status);
+ current_note = current_note->next;
+ if (current_note) {
+ fprintf(f, "\\GreEndOfGlyph{5}%%\n");
+ }
+ }
+ break;
+ case G_PUNCTUM:
+ if (glyph->u.notes.first_note->u.note.shape != S_ORISCUS
+ && glyph->u.notes.first_note->u.note.shape != S_ORISCUS_AUCTUS
+ && glyph->u.notes.first_note->u.note.shape !=
+ S_ORISCUS_DEMINUTUS
+ && glyph->u.notes.first_note->u.note.shape !=
+ S_ORISCUS_SCAPUS) {
+ switch (glyph->u.notes.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ glyph->u.notes.first_note->u.note.shape =
+ S_PUNCTUM_AUCTUS_ASCENDENS;
+ break;
+ case L_AUCTUS_DESCENDENS:
+ case L_AUCTA:
+ glyph->u.notes.first_note->u.note.shape =
+ S_PUNCTUM_AUCTUS_DESCENDENS;
+ break;
+ case L_DEMINUTUS:
+ case L_INITIO_DEBILIS:
+ glyph->u.notes.first_note->u.note.shape = S_PUNCTUM_DEMINUTUS;
+ default:
+ break;
+ }
+ }
+ /* else fall into the next case */
+ case G_PUNCTUM_INCLINATUM:
+ case G_VIRGA:
+ case G_VIRGA_REVERSA:
+ case G_STROPHA:
+ case G_STROPHA_AUCTA:
+ gregoriotex_write_note(f, glyph->u.notes.first_note, glyph, element,
+ next_note_pitch);
+ gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status);
+ break;
+ default:
+ /* special case of the torculus resupinus which first note is not a
+ * punctum */
+ if (glyph->u.notes.glyph_type == G_TORCULUS_RESUPINUS
+ && current_note->u.note.shape != S_PUNCTUM
+ && current_note->u.note.shape != S_QUILISMA) {
+ leading_shape = determine_leading_shape(glyph);
+ /* trick to have the good position for these glyphs */
+ glyph->u.notes.glyph_type = G_PORRECTUS_NO_BAR;
+ glyph->u.notes.first_note = current_note->next;
+ shape = gregoriotex_determine_glyph_name(glyph, element, &type,
+ &gtype);
+ fprintf(f, "\\GreGlyph{\\GreFuseTwo{\\GreCP%s}{\\GreCP%s}}"
+ "{%d}{%d}{%d}", leading_shape, shape,
+ pitch_value(glyph->u.notes.first_note->u.note.pitch),
+ pitch_value(next_note_pitch), type);
+ glyph->u.notes.first_note = current_note;
+ glyph->u.notes.glyph_type = G_TORCULUS_RESUPINUS;
+ gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note,
+ status);
+ break;
+ } else {
+ shape = gregoriotex_determine_glyph_name(glyph, element, &type,
+ &gtype);
+ fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape,
+ pitch_value(glyph->u.notes.first_note->u.note.pitch),
+ pitch_value(next_note_pitch), type);
+ gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note,
+ status);
+ break;
+ }
+ }
+}
+
+/* here we absolutely need to pass the syllable as an argument, because we
+ * will need the next note, that may be contained in the next syllable */
+
+static void gregoriotex_write_element(FILE *f, gregorio_syllable *syllable,
+ gregorio_element *element, gregoriotex_status *status)
+{
+ if (element->type == GRE_ELEMENT) {
+ gregorio_glyph *glyph;
+ for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) {
+ switch (glyph->type) {
+ case GRE_SPACE:
+ /* we assume here that it is a SP_ZERO_WIDTH, the only one a
+ * glyph can be */
+ fprintf(f, "\\GreEndOfGlyph{1}%%\n");
+ break;
+
+ case GRE_TEXVERB_GLYPH:
+ if (glyph->texverb) {
+ fprintf(f, "%% verbatim text at glyph level:\n%s%%\n"
+ "%% end of verbatim text\n", glyph->texverb);
+ }
+ break;
+
+ case GRE_FLAT:
+ fprintf(f, "\\GreFlat{%d}{0}%%\n",
+ pitch_value(glyph->u.misc.pitched.pitch));
+ break;
+
+ case GRE_NATURAL:
+ fprintf(f, "\\GreNatural{%d}{0}%%\n",
+ pitch_value(glyph->u.misc.pitched.pitch));
+ break;
+
+ case GRE_SHARP:
+ fprintf(f, "\\GreSharp{%d}{0}%%\n",
+ pitch_value(glyph->u.misc.pitched.pitch));
+ break;
+
+ default:
+ /* at this point glyph->type is GRE_GLYPH */
+ assert(glyph->type == GRE_GLYPH);
+ gregoriotex_write_glyph(f, syllable, element, glyph, status);
+ if (glyph->next && glyph->next->type == GRE_GLYPH) {
+ if (is_puncta_inclinata(glyph->next->u.notes.glyph_type)
+ || glyph->next->u.notes.glyph_type ==
+ G_PUNCTA_INCLINATA) {
+ fprintf(f, "\\GreEndOfGlyph{9}%%\n");
+ } else {
+ fprintf(f, "\\GreEndOfGlyph{0}%%\n");
+ }
+ }
+ break;
+ }
+ }
+ }
+}
+
+static void write_fixed_text_styles(FILE *f, gregorio_character *syllable_text,
+ gregorio_character *next_syllable_text)
+{
+ if (syllable_text) {
+ gregoriotex_ignore_style = gregoriotex_fix_style(syllable_text);
+ if (gregoriotex_ignore_style) {
+ fprintf(f, "\\GreSetFixedTextFormat{%d}",
+ gregoriotex_internal_style_to_gregoriotex
+ (gregoriotex_ignore_style));
+ }
+ }
+ if (next_syllable_text) {
+ gregoriotex_next_ignore_style = gregoriotex_fix_style(
+ next_syllable_text);
+ if (gregoriotex_next_ignore_style) {
+ fprintf(f, "\\GreSetFixedNextTextFormat{%d}",
+ gregoriotex_internal_style_to_gregoriotex
+ (gregoriotex_next_ignore_style));
+ }
+ }
+}
+
+static void gregoriotex_write_text(FILE *f, gregorio_character *text,
+ bool *first_syllable)
+{
+ if (text == NULL) {
+ fprintf(f, "{}{}{}");
+ return;
+ }
+ fprintf(f, "{");
+ gregorio_write_text(first_syllable && *first_syllable, text, f,
+ (&gtex_write_verb), (&gtex_print_char), (&gtex_write_begin),
+ (&gtex_write_end), (&gtex_write_special_char));
+ if (first_syllable) {
+ *first_syllable = false;
+ }
+ gregoriotex_ignore_style = gregoriotex_next_ignore_style;
+ gregoriotex_next_ignore_style = ST_NO_STYLE;
+ fprintf(f, "}");
+}
+
+/*
+ * Function printing the line clef change (only updating \localleftbox, not
+ * printing the key). Useful for \GreDiscretionary.
+ * TODO: I'm not sure about the third argument, but that's how it's called in
+ * \GreChangeClef.
+ */
+static void gregoriotex_print_change_line_clef(FILE *f,
+ gregorio_element *current_element)
+{
+ if (current_element->type == GRE_C_KEY_CHANGE) {
+ if (current_element->u.misc.pitched.flatted_key) {
+ fprintf(f, "\\GreSetLinesClef{c}{%d}{1}{%d}%%\n",
+ current_element->u.misc.pitched.pitch - '0',
+ gregoriotex_clef_flat_height('c',
+ current_element->u.misc.pitched.pitch - '0'));
+ } else {
+ fprintf(f, "\\GreSetLinesClef{c}{%d}{1}{%d}%%\n",
+ current_element->u.misc.pitched.pitch - '0', NO_KEY_FLAT);
+ }
+ }
+ if (current_element->type == GRE_F_KEY_CHANGE) {
+ if (current_element->u.misc.pitched.flatted_key) {
+ /* the third argument is 0 or 1 according to the need for a
+ * space before the clef */
+ fprintf(f, "\\GreSetLinesClef{f}{%d}{1}{%d}%%\n",
+ current_element->u.misc.pitched.pitch - '0',
+ gregoriotex_clef_flat_height('f',
+ current_element->u.misc.pitched.pitch - '0'));
+ } else {
+ fprintf(f, "\\GreSetLinesClef{f}{%d}{1}{%d}%%\n",
+ current_element->u.misc.pitched.pitch - '0', NO_KEY_FLAT);
+ }
+ }
+}
+
+static void handle_final_bar(FILE *f, const char *type, gregorio_syllable *syllable)
+{
+ gregorio_element *element;
+ fprintf(f, "\\GreFinal%s{%%\n", type);
+ /* first element will be the bar, which we just handled, so skip it */
+ for (element = (*syllable->elements)->next; element;
+ element = element->next) {
+ switch (element->type) {
+ case GRE_TEXVERB_ELEMENT:
+ if (element->texverb) {
+ fprintf(f, "%% verbatim text at element level:\n%s%%\n"
+ "%% end of verbatim text\n", element->texverb);
+ }
+ break;
+
+ case GRE_CUSTOS:
+ assert(element->u.misc.pitched.force_pitch);
+ fprintf(f, "\\GreManualCustos{%d}%%\n",
+ pitch_value(element->u.misc.pitched.pitch));
+ break;
+
+ default:
+ /* do nothing */
+ break;
+ }
+ }
+ fprintf(f, "}%%\n");
+}
+
+static __inline bool is_manual_custos(const gregorio_element *element)
+{
+ return element->type == GRE_ELEMENT
+ && element->u.first_glyph
+ && element->u.first_glyph->type == GRE_MANUAL_CUSTOS;
+}
+
+static __inline bool next_is_bar(const gregorio_syllable *syllable,
+ const gregorio_element *element)
+{
+ bool got_custos = false;
+ if (element) {
+ element = element->next;
+ }
+
+ while (syllable) {
+ if (element) {
+ if (element->type == GRE_BAR) {
+ return true;
+ }
+ /* allow no more than one manual custos before a bar */
+ if (got_custos || !is_manual_custos(element)) {
+ return false;
+ }
+ got_custos = true;
+ if (element->next) {
+ /* look at the next element */
+ element = element->next;
+ continue;
+ }
+ }
+
+ syllable = syllable->next_syllable;
+ if (!syllable) {
+ return false;
+ }
+ if (syllable->type == GRE_BAR) {
+ return true;
+ }
+ if (syllable->type != GRE_SYLLABLE) {
+ return false;
+ }
+
+ /* the next syllable is a GRE_SYLLABLE; so look at the element */
+ element = syllable->elements[0];
+ }
+
+ assert(false); /* should never reach here */
+ return false; /* avoid gcc 5.1 warning */
+}
+
+static __inline void write_syllable_point_and_click(FILE *const f,
+ const gregorio_syllable *const syllable,
+ const gregoriotex_status *const status)
+{
+ if (status->point_and_click && syllable->src_line) {
+ fprintf(f, "%u:%u:%u", syllable->src_line, syllable->src_offset,
+ syllable->src_column + 1);
+ }
+}
+
+/*
+ * Arguments are relatively obvious. The most obscure is certainly first_of_disc
+ * which is 0 all the time, except in the case of a "clef change syllable". In
+ * this case we make a \GreDiscretionary with two arguments:
+ * 1.what should be printed if the syllable is the last of its line (which
+ * basically means everything but clefs and custos), and
+ * 2. what should be printed if it's in a middle of a line (which means
+ * everything)
+ * So the first_of_disc argument is:
+ * 0 if we don't know (general case)
+ * 1 in case of the first argument of a \GreDiscretionary
+ * 2 if we are in the second argument (necessary in order to avoid infinite loops)
+ */
+static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable,
+ bool * first_syllable, unsigned char *line_number,
+ unsigned char first_of_disc, gregoriotex_status *const status)
+{
+ gregorio_element *clef_change_element = NULL, *element;
+ if (!syllable) {
+ return;
+ }
+ /* Very first: before anything, if the syllable is the beginning of a
+ * no-linebreak area: */
+ if (syllable->no_linebreak_area == NLBA_BEGINNING) {
+ fprintf(f, "\\GreBeginNLBArea{1}{0}%%\n");
+ }
+ if (syllable->euouae == EUOUAE_BEGINNING) {
+ fprintf(f, "\\GreBeginEUOUAE{}%%\n");
+ }
+ /*
+ * first we check if the syllable is only a end of line. If it is the case,
+ * we don't print anything but a comment (to be able to read it if we read
+ * GregorioTeX). The end of lines are treated separately in GregorioTeX, it
+ * is buit inside the TeX structure.
+ */
+ if (syllable->elements && *(syllable->elements)) {
+ if ((syllable->elements)[0]->type == GRE_END_OF_LINE) {
+ if ((syllable->elements)[0]->u.misc.unpitched.info.sub_type !=
+ GRE_END_OF_PAR) {
+ fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n");
+ } else {
+ fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n");
+ }
+ if (*line_number == 1) {
+ fprintf(f, "\\GreAdjustThirdLine %%\n");
+ *line_number = 0;
+ }
+ return;
+ }
+ /*
+ * This case is not simple: if the syllable contains a clef change,
+ * whether it is (c4) or (::c4) or (z0::c4), we put it in a
+ * discretionary. Warning: only these three cases will have the expected
+ * effect. So first we detect it:
+ */
+ if (first_of_disc == 0) { /* to avoid infinite loops */
+ clef_change_element = gregoriotex_syllable_is_clef_change(syllable);
+ if (clef_change_element) {
+ /*
+ * In this case, the first thing to do is to change the line clef
+ */
+ gregoriotex_print_change_line_clef(f, clef_change_element);
+ fprintf(f, "\\GreDiscretionary{%%\n");
+ gregoriotex_write_syllable(f, syllable, first_syllable,
+ line_number, 1, status);
+ fprintf(f, "}{%%\n");
+ gregoriotex_write_syllable(f, syllable, first_syllable,
+ line_number, 2, status);
+ fprintf(f, "}%%\n");
+ return;
+ }
+ }
+ write_fixed_text_styles(f, syllable->text,
+ syllable->next_syllable? syllable->next_syllable->text : NULL);
+ if ((syllable->elements)[0]->type == GRE_BAR) {
+ if (!syllable->next_syllable && !syllable->text
+ && (syllable->elements)[0]->u.misc.unpitched.info.bar ==
+ B_DIVISIO_FINALIS) {
+ handle_final_bar(f, "DivisioFinalis", syllable);
+ return;
+ }
+ if (!syllable->next_syllable && !syllable->text
+ && (syllable->elements)[0]->u.misc.unpitched.info.bar ==
+ B_DIVISIO_MAIOR) {
+ handle_final_bar(f, "DivisioMaior", syllable);
+ return;
+ } else {
+ fprintf(f, "\\GreBarSyllable");
+ }
+ } else {
+ fprintf(f, "\\GreSyllable");
+ }
+ } else {
+ write_fixed_text_styles(f, syllable->text,
+ syllable->next_syllable? syllable->next_syllable->text : NULL);
+ fprintf(f, "\\GreSyllable");
+ }
+ gregoriotex_write_text(f, syllable->text, first_syllable);
+ if (syllable->position == WORD_END
+ || syllable->position == WORD_ONE_SYLLABLE || !syllable->text
+ || !syllable->next_syllable
+ || syllable->next_syllable->type == GRE_END_OF_LINE
+ || syllable->next_syllable->type == GRE_END_OF_PAR) {
+ fprintf(f, "{1}");
+ } else {
+ fprintf(f, "{0}");
+ }
+ if (syllable->next_syllable) {
+ fprintf(f, "{\\GreSetNextSyllable");
+ gregoriotex_write_text(f, syllable->next_syllable->text, NULL);
+ fprintf(f, "}{");
+ write_syllable_point_and_click(f, syllable, status);
+ fprintf(f, "}{%d}{",
+ gregoriotex_syllable_first_type(syllable->next_syllable));
+ } else {
+ fprintf(f, "{\\GreSetNextSyllable{}{}{}}{");
+ write_syllable_point_and_click(f, syllable, status);
+ fprintf(f, "}{0}{");
+ }
+ if (syllable->translation) {
+ if (syllable->translation_type == TR_WITH_CENTER_BEGINNING) {
+ fprintf(f, "%%\n\\GreWriteTranslationWithCenterBeginning{");
+ } else {
+ fprintf(f, "%%\n\\GreWriteTranslation{");
+ }
+ gregoriotex_write_translation(f, syllable->translation);
+ fprintf(f, "}%%\n");
+ }
+ if (syllable->translation_type) {
+ if (syllable->translation_type == TR_WITH_CENTER_END)
+ fprintf(f, "%%\n\\GreTranslationCenterEnd %%\n");
+ }
+ if (syllable->abovelinestext) {
+ fprintf(f, "%%\n\\GreSetTextAboveLines{%s}%%\n",
+ syllable->abovelinestext);
+ }
+ if (gregoriotex_is_last_of_line(syllable)) {
+ fprintf(f, "%%\n\\GreLastOfLine %%\n");
+ }
+ if (!syllable->next_syllable) {
+ fprintf(f, "%%\n\\GreLastOfScore %%\n");
+ }
+ fprintf(f, "}{%%\n");
+
+ for (element = *syllable->elements; element;
+ element = element->next) {
+ if (element->nabc_lines && element->nabc) {
+ size_t i;
+ for (i = 0; i < element->nabc_lines; i++) {
+ if (element->nabc[i]) {
+ fprintf(f, "\\GreNABCNeumes{%d}{%s}%%\n", (int)(i+1),
+ element->nabc[i]);
+ }
+ }
+ }
+ switch (element->type) {
+ case GRE_SPACE:
+ switch (element->u.misc.unpitched.info.space) {
+ case SP_ZERO_WIDTH:
+ fprintf(f, "\\GreEndOfElement{3}{1}%%\n");
+ break;
+ case SP_LARGER_SPACE:
+ fprintf(f, "\\GreEndOfElement{1}{0}%%\n");
+ break;
+ case SP_GLYPH_SPACE:
+ fprintf(f, "\\GreEndOfElement{2}{0}%%\n");
+ break;
+ case SP_GLYPH_SPACE_NB:
+ fprintf(f, "\\GreEndOfElement{2}{1}%%\n");
+ break;
+ case SP_LARGER_SPACE_NB:
+ fprintf(f, "\\GreEndOfElement{1}{1}%%\n");
+ break;
+ case SP_NEUMATIC_CUT_NB:
+ fprintf(f, "\\GreEndOfElement{0}{1}%%\n");
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case GRE_TEXVERB_ELEMENT:
+ if (element->texverb) {
+ fprintf(f, "%% verbatim text at element level:\n%s%%\n"
+ "%% end of verbatim text\n", element->texverb);
+ }
+ break;
+
+ case GRE_NLBA:
+ if (element->u.misc.unpitched.info.nlba == NLBA_BEGINNING) {
+ fprintf(f, "\\GreBeginNLBArea{0}{0}%%\n");
+ } else {
+ fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n",
+ next_is_bar(syllable, element)? 3 : 0);
+ }
+ break;
+
+ case GRE_ALT:
+ if (element->texverb) {
+ fprintf(f, "\\GreSetTextAboveLines{%s}%%\n", element->texverb);
+ }
+ break;
+
+ case GRE_C_KEY_CHANGE:
+ if (first_of_disc != 1) {
+ /*
+ * We don't print clef changes at the end of a line
+ */
+ if (element->previous && element->previous->type == GRE_BAR) {
+ if (element->u.misc.pitched.flatted_key) {
+ /* the third argument is 0 or 1 according to the need
+ * for a space before the clef */
+ fprintf(f, "\\GreChangeClef{c}{%d}{0}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ gregoriotex_clef_flat_height('c',
+ element->u.misc.pitched.pitch - '0'));
+ } else {
+ fprintf(f, "\\GreChangeClef{c}{%d}{0}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ NO_KEY_FLAT);
+ }
+ } else {
+ if (element->u.misc.pitched.flatted_key) {
+ /* the third argument is 0 or 1 according to the need
+ * for a space before the clef */
+ fprintf(f, "\\GreChangeClef{c}{%d}{1}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ gregoriotex_clef_flat_height('c',
+ element->u.misc.pitched.pitch - '0'));
+ } else {
+ fprintf(f, "\\GreChangeClef{c}{%d}{1}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ NO_KEY_FLAT);
+ }
+ }
+ }
+ break;
+
+ case GRE_F_KEY_CHANGE:
+ if (first_of_disc != 1) {
+ /*
+ * We don't print clef changes at the end of a line
+ */
+ if (element->previous && element->previous->type == GRE_BAR) {
+ if (element->u.misc.pitched.flatted_key) {
+ /* the third argument is 0 or 1 according to the need
+ * for a space before the clef */
+ fprintf(f, "\\GreChangeClef{f}{%d}{0}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ gregoriotex_clef_flat_height('f',
+ element->u.misc.pitched.pitch - '0'));
+ } else {
+ fprintf(f, "\\GreChangeClef{f}{%d}{0}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ NO_KEY_FLAT);
+ }
+ } else {
+ if (element->u.misc.pitched.flatted_key) {
+ /* the third argument is 0 or 1 according to the need
+ * for a space before the clef */
+ fprintf(f, "\\GreChangeClef{f}{%d}{1}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ gregoriotex_clef_flat_height('f',
+ element->u.misc.pitched.pitch - '0'));
+ } else {
+ fprintf(f, "\\GreChangeClef{f}{%d}{1}{%d}%%\n",
+ element->u.misc.pitched.pitch - '0',
+ NO_KEY_FLAT);
+ }
+ }
+ }
+ break;
+
+ case GRE_CUSTOS:
+ if (first_of_disc != 1) {
+ /*
+ * We don't print custos before a bar at the end of a line
+ */
+ /* we also print an unbreakable larger space before the custo */
+ fprintf(f, "\\GreEndOfElement{1}{1}%%\n\\Gre%sCustos{%d}"
+ "\\GreNextCustos{%d}%%\n",
+ element->u.misc.pitched.force_pitch? "Manual" : "",
+ pitch_value(element->u.misc.pitched.pitch),
+ pitch_value(gregorio_determine_next_pitch(syllable,
+ element, NULL)));
+ }
+ break;
+
+ case GRE_BAR:
+ gregoriotex_write_bar(f,
+ element->u.misc.unpitched.info.bar,
+ element->u.misc.unpitched.special_sign,
+ element->next && !is_manual_custos(element->next));
+ break;
+
+ case GRE_END_OF_LINE:
+ /* here we suppose we don't have two linebreaks in the same
+ * syllable */
+ if (element->u.misc.unpitched.info.sub_type != GRE_END_OF_PAR) {
+ fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n");
+ } else {
+ fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n");
+ }
+ if (*line_number == 1) {
+ fprintf(f, "\\GreAdjustThirdLine %%\n");
+ *line_number = 0;
+ }
+ break;
+
+ default:
+ /* there current_element->type is GRE_ELEMENT */
+ assert(element->type == GRE_ELEMENT);
+ gregoriotex_write_element(f, syllable, element, status);
+ if (element->next && (element->next->type == GRE_ELEMENT
+ || (element->next->next
+ && element->next->type == GRE_ALT
+ && element->next->next->type ==
+ GRE_ELEMENT))) {
+ fprintf(f, "\\GreEndOfElement{0}{0}%%\n");
+ }
+ break;
+ }
+ }
+ fprintf(f, "}%%\n");
+ if (syllable->position == WORD_END
+ || syllable->position == WORD_ONE_SYLLABLE || !syllable->text) {
+ fprintf(f, "%%\n");
+ }
+ /* Very last, if the syllable is the end of a no-linebreak area: */
+ if (syllable->no_linebreak_area == NLBA_END) {
+ fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n",
+ next_is_bar(syllable, NULL)? 3 : 1);
+ }
+ if (syllable->euouae == EUOUAE_END) {
+ fprintf(f, "\\GreEndEUOUAE{%d}%%\n",
+ next_is_bar(syllable, NULL)? 3 : 1);
+ }
+}
+
+static char *digest_to_hex(const unsigned char digest[SHA1_DIGEST_SIZE])
+{
+ static const char *const hex = "0123456789abcdef";
+ static char result[41];
+
+ char *p = result;
+ unsigned char byte;
+
+ int i;
+ for (i = 0; i < SHA1_DIGEST_SIZE; ++i) {
+ byte = digest[i];
+
+ *(p++) = hex[(byte >> 4) & 0x0FU];
+ *(p++) = hex[byte & 0x0FU];
+ }
+
+ *p = '\0';
+
+ return result;
+}
+
+static void initialize_score(gregoriotex_status *const status,
+ gregorio_score *score, const bool point_and_click)
+{
+ gregorio_syllable *syllable;
+
+ status->bottom_line = false;
+ status->top_height = status->bottom_height = UNDETERMINED_HEIGHT;
+ status->abovelinestext = status->translation = false;
+
+ for (syllable = score->first_syllable; syllable;
+ syllable = syllable->next_syllable) {
+ int voice;
+
+ if (syllable->translation) {
+ status->translation = true;
+ }
+
+ if (syllable->abovelinestext) {
+ status->abovelinestext = true;
+ }
+
+ for (voice = 0; voice < score->number_of_voices; ++voice) {
+ gregorio_element *element;
+
+ gregoriotex_compute_positioning(syllable->elements[voice]);
+ for (element = syllable->elements[voice]; element;
+ element = element->next) {
+ gregorio_glyph *glyph;
+
+ switch (element->type) {
+ case GRE_ALT:
+ status->abovelinestext = true;
+ break;
+
+ case GRE_ELEMENT:
+ for (glyph = element->u.first_glyph; glyph;
+ glyph = glyph->next) {
+ if (glyph->type == GRE_GLYPH) {
+ compute_height_extrema(glyph,
+ glyph->u.notes.first_note,
+ &(status->top_height),
+ &(status->bottom_height));
+ }
+ }
+ break;
+
+ default:
+ /* to eliminate the warning */
+ break;
+ }
+ }
+ }
+ }
+
+ fixup_height_extrema(&(status->top_height), &(status->bottom_height));
+
+ status->point_and_click = point_and_click;
+}
+
+void gregoriotex_write_score(FILE *const f, gregorio_score *const score,
+ const char *const point_and_click_filename)
+{
+ gregorio_character *first_text;
+ /* true if it is the first syllable and false if not.
+ * It is for the initial. */
+ bool first_syllable = false;
+ char clef_letter;
+ int clef_line;
+ char clef_flat = NO_KEY_FLAT;
+ gregorio_syllable *current_syllable;
+ /* the current line (as far as we know), it is always 0, it can be 1 in the
+ * case of the first line of a score with a two lines initial */
+ unsigned char line = 0;
+ int annotation_num;
+ gregoriotex_status status;
+
+ initialize_score(&status, score, point_and_click_filename != NULL);
+
+ if (!f) {
+ gregorio_message(_("call with NULL file"), "gregoriotex_write_score",
+ VERBOSITY_ERROR, 0);
+ return;
+ }
+
+ if (score->number_of_voices != 1) {
+ gregorio_message(_("gregoriotex only works in monophony (for the "
+ "moment)"), "gregoriotex_write_score", VERBOSITY_ERROR, 0);
+ }
+
+ fprintf(f, "%% File generated by gregorio %s\n", GREGORIO_VERSION);
+ fprintf(f, "\\GregorioTeXAPIVersion{%s}%%\n", VERSION);
+
+ if (score->name) {
+ fprintf(f, "%% Name: %s\n", score->name);
+ }
+ if (score->si.author) {
+ fprintf(f, "%% Author: %s\n", score->si.author);
+ }
+ if (score->gabc_copyright) {
+ fprintf(f, "%% The copyright of this gabc is: %s\n",
+ score->gabc_copyright);
+ }
+ if (score->score_copyright) {
+ fprintf(f, "%% The copyright of the score is: %s\n",
+ score->score_copyright);
+ }
+
+ fprintf(f, "\\GreBeginScore{%s}{%d}{%d}{%d}{%d}{%s}%%\n",
+ digest_to_hex(score->digest), status.top_height,
+ status.bottom_height, bool_to_int(status.translation),
+ bool_to_int(status.abovelinestext),
+ point_and_click_filename? point_and_click_filename : "");
+ switch (score->centering) {
+ case SCHEME_SYLLABLE:
+ fprintf(f, "\\englishcentering%%\n");
+ break;
+ case SCHEME_VOWEL:
+ fprintf(f, "\\defaultcentering%%\n");
+ break;
+ default:
+ /* don't set any centering */
+ break;
+ }
+ if (score->nabc_lines) {
+ fprintf(f, "\\GreScoreNABCLines{%d}", (int)score->nabc_lines);
+ }
+ /* we select the good font -- Deprecated (remove in next release) */
+ if (score->gregoriotex_font) {
+ if (!strcmp(score->gregoriotex_font, "gregorio")) {
+ fprintf(f, "\\gresetgregoriofont{gregorio}%%\n");
+ }
+ if (!strcmp(score->gregoriotex_font, "parmesan")) {
+ fprintf(f, "\\gresetgregoriofont{parmesan}%%\n");
+ }
+ if (!strcmp(score->gregoriotex_font, "greciliae")) {
+ fprintf(f, "\\gresetgregoriofont{greciliae}%%\n");
+ }
+ }
+ /* end Deprecated section */
+ if (score->annotation[0]) {
+ fprintf(f, "\\GreAnnotationLines");
+ for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS;
+ ++annotation_num) {
+ if (score->annotation[annotation_num]) {
+ fprintf(f, "{%s}",
+ score->annotation[annotation_num]);
+ }
+ else {
+ fprintf(f, "{}");
+ }
+ }
+ fprintf(f, "%%\n");
+ }
+ if (score->mode != 0) {
+ fprintf(f, "\\GreMode{%d}%%\n", score->mode);
+ }
+ /* first we draw the initial (first letter) and the initial key */
+ if (score->initial_style == NO_INITIAL) {
+ fprintf(f, "\\GreNoInitial %%\n");
+ } else {
+ if (score->initial_style == BIG_INITIAL) {
+ fprintf(f, "\\GreSetBigInitial %%\n");
+ line = 1;
+ }
+ first_text = gregorio_first_text(score);
+ if (first_text) {
+ fprintf(f, "\\GreSetInitial{");
+ gregorio_write_initial(first_text, f,
+ (&gtex_write_verb),
+ (&gtex_print_char),
+ (&gtex_write_begin),
+ (&gtex_write_end), (&gtex_write_special_char));
+ fprintf(f, "}%%\n");
+ first_syllable = true;
+ }
+ }
+ if (score->si.manuscript_reference) {
+ fprintf(f, "\\GreScoreReference{%s}%%\n",
+ score->si.manuscript_reference);
+ }
+ if (score->first_voice_info) {
+ gregoriotex_write_voice_info(f, score->first_voice_info);
+ }
+ fprintf(f, "\\GreBeginNotes %%\n");
+ if (score->first_voice_info) {
+ gregorio_det_step_and_line_from_key(score->
+ first_voice_info->initial_key, &clef_letter, &clef_line);
+ if (score->first_voice_info->flatted_key) {
+ clef_flat = gregoriotex_clef_flat_height(clef_letter, clef_line);
+ } else {
+ clef_flat = NO_KEY_FLAT;
+ }
+ } else {
+ clef_letter = 'c';
+ clef_line = 3;
+ clef_flat = NO_KEY_FLAT;
+ }
+ fprintf(f, "\\GreSetInitialClef{%c}{%d}{%d}%%\n", clef_letter, clef_line,
+ clef_flat);
+ current_syllable = score->first_syllable;
+ while (current_syllable) {
+ gregoriotex_write_syllable(f, current_syllable, &first_syllable, &line,
+ 0, &status);
+ current_syllable = current_syllable->next_syllable;
+ }
+ fprintf(f, "\\GreEndScore %%\n\\endinput %%\n");
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex.h
new file mode 100644
index 00000000000..eb2ee832dbc
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/gregoriotex/gregoriotex.h
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#ifndef GREGORIOTEX_H
+#define GREGORIOTEX_H
+
+#include "bool.h"
+
+#define OFFSET_CASE(name) static const char *const name = #name
+
+/*
+ * Here are the different types, they must be the same as in squarize.py
+ */
+
+typedef enum gtex_type {
+ T_ONE_NOTE = 1,
+ /* two note neumes */
+ T_PES,
+ T_PESQUADRATUM,
+ T_PESQUADRATUM_LONGQUEUE,
+ T_PESQUILISMA,
+ T_PESQUASSUS,
+ T_PESQUASSUS_LONGQUEUE,
+ T_PESQUILISMAQUADRATUM,
+ T_PESQUILISMAQUADRATUM_LONGQUEUE,
+ T_FLEXUS,
+ T_FLEXUS_LONGQUEUE,
+ T_FLEXUS_ORISCUS,
+ T_FLEXUS_ORISCUS_SCAPUS,
+ T_FLEXUS_ORISCUS_SCAPUS_LONGQUEUE,
+ T_VIRGA_STRATA,
+ /* three note neumes */
+ T_PORRECTUS,
+ T_TORCULUS,
+ T_TORCULUS_QUILISMA,
+ T_SCANDICUS, /* only deminutus */
+ T_ANCUS, /* only deminutus */
+ T_ANCUS_LONGQUEUE, /* only deminutus */
+ T_SALICUS,
+ T_SALICUS_LONGQUEUE,
+ /* four note neumes */
+ T_PORRECTUS_FLEXUS,
+ T_TORCULUS_RESUPINUS,
+ T_TORCULUS_LIQUESCENS,
+ T_TORCULUS_RESUPINUS_FLEXUS
+} gtex_type;
+
+/* the different types for the alignment of the notes in GregorioTeX
+ * these values are numbers coded into GregorioTeX */
+typedef enum gtex_alignment {
+ AT_ONE_NOTE = 0,
+ AT_FLEXUS = 1,
+ AT_PORRECTUS = 2,
+ AT_INITIO_DEBILIS = 3,
+ AT_QUILISMA = 4,
+ AT_ORISCUS = 5,
+ AT_PUNCTUM_INCLINATUM = 6,
+ AT_STROPHA = 7,
+ AT_FLEXUS_1 = 8,
+ AT_FLEXUS_DEMINUTUS = 9
+} gtex_alignment;
+
+/* Here we define a function that will determine the number of the
+ * liquescentia that we will add to the glyph number. There are several types
+ * as all glyphs can't have all liquescentiae. Let's first define the
+ * different types: */
+
+typedef enum gtex_glyph_liquescentia {
+ /* for glyphs that accept all liquecentiae */
+ LG_ALL = 0,
+ /* for glyphs that don't accept initio debilis */
+ LG_NO_INITIO,
+ /* for glyphs for which we don't know if the auctus is ascendens or
+ * descendens */
+ LG_UNDET_AUCTUS,
+ /* for glyphs that don't accept liquescentia */
+ LG_NONE,
+ LG_ONLY_DEMINUTUS,
+ LG_NO_DEMINUTUS,
+ LG_ONLY_AUCTUS
+} gtex_glyph_liquescentia;
+
+typedef enum gtex_sign_type {
+ ST_H_EPISEMUS = 0,
+ ST_V_EPISEMUS = 1
+} gtex_sign_type;
+
+#define HEPISEMUS_FIRST_TWO 12
+
+static __inline bool choral_sign_here_is_low(const gregorio_glyph *const glyph,
+ const gregorio_note *const note, bool *const kind_of_pes)
+{
+ if (kind_of_pes) {
+ *kind_of_pes = false;
+ }
+
+ switch (glyph->u.notes.glyph_type) {
+ case G_FLEXA:
+ case G_TORCULUS:
+ case G_TORCULUS_LIQUESCENS:
+ case G_TORCULUS_RESUPINUS_FLEXUS:
+ case G_PORRECTUS_FLEXUS:
+ if (!note->next) {
+ return true;
+ }
+ break;
+
+ case G_PODATUS:
+ case G_PORRECTUS:
+ case G_TORCULUS_RESUPINUS:
+ if (!note->next || note->next->next) {
+ break;
+ }
+ if (kind_of_pes) {
+ *kind_of_pes = true;
+ }
+ if (note->u.note.shape != S_QUILISMA) {
+ return true;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return false;
+}
+
+static __inline bool is_on_a_line(const char pitch)
+{
+ return pitch % 2 == 0;
+}
+
+static __inline bool is_between_lines(const char pitch)
+{
+ return pitch % 2 == 1;
+}
+
+bool gtex_is_h_episemus_above_shown(const gregorio_note *const note);
+bool gtex_is_h_episemus_below_shown(const gregorio_note *const note);
+const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph,
+ const gregorio_element *const element, gtex_alignment *const type,
+ gtex_type *const gtype);
+void gregoriotex_compute_positioning(const gregorio_element *element);
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.c
new file mode 100644
index 00000000000..f5dc0c53d1a
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.c
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2009-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h> /* for exit() */
+#include <stdarg.h> /* for exit() */
+#include "bool.h"
+#include "messages.h"
+
+static FILE *error_out;
+static const char *file_name = NULL;
+static gregorio_verbosity verbosity_mode = 0;
+static bool debug_messages = false;
+static int return_value = 0;
+
+int gregorio_get_return_value(void)
+{
+ return return_value;
+}
+
+void gregorio_set_error_out(FILE *const f)
+{
+ error_out = f;
+}
+
+void gregorio_set_file_name(const char *const new_name)
+{
+ file_name = new_name;
+}
+
+void gregorio_set_verbosity_mode(const gregorio_verbosity verbosity)
+{
+ verbosity_mode = verbosity;
+}
+
+#if 0 /* unused */
+static void gregorio_set_debug_messages(bool debug)
+{
+ debug_messages = debug;
+}
+#endif
+
+static const char *verbosity_to_str(const gregorio_verbosity verbosity)
+{
+ const char *str;
+ switch (verbosity) {
+ case VERBOSITY_WARNING:
+ str = _("warning:");
+ break;
+ case VERBOSITY_DEPRECATION:
+ str = _("deprecation:");
+ break;
+ case VERBOSITY_ERROR:
+ str = _("error:");
+ break;
+ case VERBOSITY_FATAL:
+ str = _("fatal error:");
+ break;
+ default:
+ /* INFO, for example */
+ str = " ";
+ break;
+ }
+ return str;
+}
+
+void gregorio_messagef(const char *function_name,
+ gregorio_verbosity verbosity, int line_number,
+ const char *format, ...)
+{
+ va_list args;
+ const char *verbosity_str;
+
+ if (!debug_messages) {
+ line_number = 0;
+ function_name = NULL;
+ }
+
+ if (!error_out) {
+ fprintf(stderr, _("warning: error_out not set in gregorio_messages, "
+ "assumed stderr\n"));
+ error_out = stderr;
+ }
+ if (!verbosity_mode) {
+ fprintf(stderr, _("warning: verbosity mode not set in "
+ "gregorio_messages, assumed warnings\n"));
+ verbosity_mode = VERBOSITY_WARNING;
+ }
+ if (verbosity < verbosity_mode) {
+ return;
+ }
+ verbosity_str = verbosity_to_str(verbosity);
+ if (line_number) {
+ if (function_name) {
+ if (!file_name) {
+ fprintf(error_out, "line %d: in function `%s': %s",
+ line_number, function_name, verbosity_str);
+ } else {
+ fprintf(error_out, "%d: in function `%s': %s", line_number,
+ function_name, verbosity_str);
+ }
+ } else {
+ /* no function_name specified */
+ if (!file_name) {
+ fprintf(error_out, "line %d: %s", line_number, verbosity_str);
+ } else {
+ fprintf(error_out, "%d: %s", line_number, verbosity_str);
+ }
+ }
+ } else {
+ if (function_name) {
+ /*
+ * if (!file_name) {
+ * fprintf (error_out, "in function `%s': %s",
+ * function_name, verbosity_str);
+ * return;
+ * } else {
+ */
+ fprintf(error_out, "in function `%s': %s", function_name,
+ verbosity_str);
+ /* } */
+ } else {
+ /* no function_name specified */
+ /*
+ * if (!file_name) {
+ * fprintf (error_out, "%s", verbosity_str);
+ * return;
+ * } else {
+ */
+ fprintf(error_out, "%s", verbosity_str);
+ /* } */
+ }
+ }
+ va_start(args, format);
+ vfprintf(error_out, format, args);
+ va_end(args);
+ fprintf(error_out, "\n");
+
+ switch (verbosity) {
+ case VERBOSITY_ERROR:
+ return_value = 1;
+ break;
+ case VERBOSITY_FATAL:
+ exit(1);
+ break;
+ default:
+ break;
+ }
+}
+
+void gregorio_message(const char *string, const char *function_name,
+ gregorio_verbosity verbosity, int line_number)
+{
+ gregorio_messagef(function_name, verbosity, line_number, "%s", string);
+}
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.h
new file mode 100644
index 00000000000..fc25c143767
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/messages.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MESSAGES_H
+#define MESSAGES_H
+
+#ifndef ENABLE_NLS
+#define ENABLE_NLS 0
+#endif
+#if ENABLE_NLS == 1
+#include "gettext.h"
+#define _(str) gettext(str)
+#define N_(str) str
+#define ngt_(str, strtwo, count) ngettext(str, strtwo, count)
+#else
+#define _(str) str
+#define N_(str) str
+#define ngt_(str, strtwo, count) str
+#endif
+
+typedef enum gregorio_verbosity {
+ VERBOSITY_INFO = 1,
+ VERBOSITY_WARNING,
+ VERBOSITY_DEPRECATION,
+ VERBOSITY_ERROR,
+ VERBOSITY_FATAL
+} gregorio_verbosity;
+
+void gregorio_message(const char *string, const char *function_name,
+ gregorio_verbosity verbosity, int line_number);
+void gregorio_messagef(const char *function_name,
+ gregorio_verbosity verbosity,
+ int line_number, const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 4, 5)));
+void gregorio_set_verbosity_mode(gregorio_verbosity verbosity);
+void gregorio_set_file_name(const char *new_name);
+void gregorio_set_error_out(FILE *f);
+int gregorio_get_return_value(void);
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/plugins.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/plugins.h
new file mode 100644
index 00000000000..377d3067241
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/plugins.h
@@ -0,0 +1,34 @@
+/*
+ * Gregorio format support headers.
+ *
+ * Copyright (C) 2008-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef PLUGINS_H
+#define PLUGINS_H
+
+void dump_write_score(FILE *f, gregorio_score *score);
+
+gregorio_score *gabc_read_score(FILE *f_in);
+
+void gabc_write_score(FILE *f, gregorio_score *score);
+
+void gregoriotex_write_score(FILE *f, gregorio_score *score,
+ const char *point_and_click_filename);
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.c
new file mode 100644
index 00000000000..64ab6bad55f
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.c
@@ -0,0 +1,373 @@
+/*
+ * sha1.c - Functions to compute SHA1 message digest of files or
+ * memory blocks according to the NIST specification FIPS-180-1.
+ *
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ * Copyright (C) 2000-2001, 2003-2006, 2008-2014 Free Software Foundation, Inc.
+ *
+ * This file is part of Gregorio.
+ * This file has been adapted from GNU coreutils to fit Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* Written by Scott G. Miller
+ Credits:
+ Robert Klep <robert@ilse.nl> -- Expansion function fix
+*/
+
+#include "config.h"
+#include "sha1.h"
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#else
+#include <inttypes.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef HAVE_STDALIGN_H
+#include <stdalign.h>
+#ifdef __clang__
+#pragma clang diagnostic ignored "-Wc11-extensions"
+#endif
+#else
+#define alignof(x) sizeof(x)
+#endif
+
+#ifdef WORDS_BIGENDIAN
+#define SWAP(n) (n)
+#else
+#define SWAP(n) \
+ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
+#endif
+
+#define BLOCKSIZE 32768
+#if BLOCKSIZE % 64 != 0
+#error "invalid BLOCKSIZE"
+#endif
+
+/* This array contains the bytes used to pad the buffer to the next
+ 64-byte boundary. (RFC 1321, 3.1: Step 1) */
+static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
+
+/* Take a pointer to a 160 bit block of data (five 32 bit ints) and
+ initialize it to the start constants of the SHA1 algorithm. This
+ must be called before using hash in the call to sha1_hash. */
+void sha1_init_ctx(struct sha1_ctx *ctx)
+{
+ ctx->A = 0x67452301;
+ ctx->B = 0xefcdab89;
+ ctx->C = 0x98badcfe;
+ ctx->D = 0x10325476;
+ ctx->E = 0xc3d2e1f0;
+
+ ctx->total[0] = ctx->total[1] = 0;
+ ctx->buflen = 0;
+}
+
+/* Copy the 4 byte value from v into the memory location pointed to by *cp,
+ If your architecture allows unaligned access this is equivalent to
+ * (uint32_t *) cp = v */
+static void set_uint32(char *cp, uint32_t v)
+{
+ memcpy(cp, &v, sizeof v);
+}
+
+/* Put result from CTX in first 20 bytes following RESBUF. The result
+ must be in little endian byte order. */
+void *sha1_read_ctx(const struct sha1_ctx *ctx, void *resbuf)
+{
+ char *r = resbuf;
+ set_uint32(r + 0 * sizeof ctx->A, SWAP(ctx->A));
+ set_uint32(r + 1 * sizeof ctx->B, SWAP(ctx->B));
+ set_uint32(r + 2 * sizeof ctx->C, SWAP(ctx->C));
+ set_uint32(r + 3 * sizeof ctx->D, SWAP(ctx->D));
+ set_uint32(r + 4 * sizeof ctx->E, SWAP(ctx->E));
+
+ return resbuf;
+}
+
+/* Process the remaining bytes in the internal buffer and the usual
+ prolog according to the standard and write the result to RESBUF. */
+void *sha1_finish_ctx(struct sha1_ctx *ctx, void *resbuf)
+{
+ /*
+ * Take yet unprocessed bytes into account.
+ */
+ uint32_t bytes = ctx->buflen;
+ size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;
+
+ /*
+ * Now count remaining bytes.
+ */
+ ctx->total[0] += bytes;
+ if (ctx->total[0] < bytes)
+ ++ctx->total[1];
+
+ /*
+ * Put the 64-bit file length in *bits* at the end of the buffer.
+ */
+ ctx->buffer[size - 2] = SWAP((ctx->total[1] << 3) | (ctx->total[0] >> 29));
+ ctx->buffer[size - 1] = SWAP(ctx->total[0] << 3);
+
+ memcpy(&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 4 - bytes);
+
+ /*
+ * Process last bytes.
+ */
+ sha1_process_block(ctx->buffer, size * 4, ctx);
+
+ return sha1_read_ctx(ctx, resbuf);
+}
+
+/* Compute SHA1 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+void *sha1_buffer(const char *buffer, size_t len, void *resblock)
+{
+ struct sha1_ctx ctx;
+
+ /*
+ * Initialize the computation context.
+ */
+ sha1_init_ctx(&ctx);
+
+ /*
+ * Process whole buffer but last len % 64 bytes.
+ */
+ sha1_process_bytes(buffer, len, &ctx);
+
+ /*
+ * Put result in desired memory area.
+ */
+ return sha1_finish_ctx(&ctx, resblock);
+}
+
+void sha1_process_bytes(const void *buffer, size_t len, struct sha1_ctx *ctx)
+{
+ /*
+ * When we already have some bits in our internal buffer concatenate
+ * both inputs first.
+ */
+ if (ctx->buflen != 0) {
+ size_t left_over = ctx->buflen;
+ size_t add = 128 - left_over > len ? len : 128 - left_over;
+
+ memcpy(&((char *) ctx->buffer)[left_over], buffer, add);
+ ctx->buflen += add;
+
+ if (ctx->buflen > 64) {
+ sha1_process_block(ctx->buffer, ctx->buflen & ~63, ctx);
+
+ ctx->buflen &= 63;
+ /*
+ * The regions in the following copy operation cannot overlap.
+ */
+ memcpy(ctx->buffer,
+ &((char *) ctx->buffer)[(left_over + add) & ~63],
+ ctx->buflen);
+ }
+
+ buffer = (const char *) buffer + add;
+ len -= add;
+ }
+
+ /*
+ * Process available complete blocks.
+ */
+ if (len >= 64) {
+#if !_STRING_ARCH_unaligned
+#define UNALIGNED_P(p) ((uintptr_t) (p) % alignof (uint32_t) != 0)
+ if (UNALIGNED_P(buffer)) {
+ while (len > 64) {
+ sha1_process_block(memcpy(ctx->buffer, buffer, 64), 64, ctx);
+ buffer = (const char *) buffer + 64;
+ len -= 64;
+ }
+ } else
+#endif
+ {
+ sha1_process_block(buffer, len & ~63, ctx);
+ buffer = (const char *) buffer + (len & ~63);
+ len &= 63;
+ }
+ }
+
+ /*
+ * Move remaining bytes in internal buffer.
+ */
+ if (len > 0) {
+ size_t left_over = ctx->buflen;
+
+ memcpy(&((char *) ctx->buffer)[left_over], buffer, len);
+ left_over += len;
+ if (left_over >= 64) {
+ sha1_process_block(ctx->buffer, 64, ctx);
+ left_over -= 64;
+ memcpy(ctx->buffer, &ctx->buffer[16], left_over);
+ }
+ ctx->buflen = left_over;
+ }
+}
+
+/* --- Code below is the primary difference between md5.c and sha1.c --- */
+
+/* SHA1 round constants */
+#define K1 0x5a827999
+#define K2 0x6ed9eba1
+#define K3 0x8f1bbcdc
+#define K4 0xca62c1d6
+
+/* Round functions. Note that F2 is the same as F4. */
+#define F1(B,C,D) ( D ^ ( B & ( C ^ D ) ) )
+#define F2(B,C,D) (B ^ C ^ D)
+#define F3(B,C,D) ( ( B & C ) | ( D & ( B | C ) ) )
+#define F4(B,C,D) (B ^ C ^ D)
+
+/* Process LEN bytes of BUFFER, accumulating context into CTX.
+ It is assumed that LEN % 64 == 0.
+ Most of this code comes from GnuPG's cipher/sha1.c. */
+
+void sha1_process_block(const void *buffer, size_t len, struct sha1_ctx *ctx)
+{
+ const uint32_t *words = buffer;
+ size_t nwords = len / sizeof(uint32_t);
+ const uint32_t *endp = words + nwords;
+ uint32_t x[16];
+ uint32_t a = ctx->A;
+ uint32_t b = ctx->B;
+ uint32_t c = ctx->C;
+ uint32_t d = ctx->D;
+ uint32_t e = ctx->E;
+ uint32_t lolen = len;
+
+ /*
+ * First increment the byte count. RFC 1321 specifies the possible
+ * length of the file up to 2^64 bits. Here we only compute the
+ * number of bytes. Do a double word increment.
+ */
+ ctx->total[0] += lolen;
+ ctx->total[1] += (len >> 31 >> 1) + (ctx->total[0] < lolen);
+
+#define rol(x, n) (((x) << (n)) | ((uint32_t) (x) >> (32 - (n))))
+
+#define M(I) ( tm = x[I&0x0f] ^ x[(I-14)&0x0f] \
+ ^ x[(I-8)&0x0f] ^ x[(I-3)&0x0f] \
+ , (x[I&0x0f] = rol(tm, 1)) )
+
+#define R(A,B,C,D,E,F,K,M) do { E += rol( A, 5 ) \
+ + F( B, C, D ) \
+ + K \
+ + M; \
+ B = rol( B, 30 ); \
+ } while(0)
+
+ while (words < endp) {
+ uint32_t tm;
+ int t;
+ for (t = 0; t < 16; t++) {
+ x[t] = SWAP(*words);
+ words++;
+ }
+
+ R(a, b, c, d, e, F1, K1, x[0]);
+ R(e, a, b, c, d, F1, K1, x[1]);
+ R(d, e, a, b, c, F1, K1, x[2]);
+ R(c, d, e, a, b, F1, K1, x[3]);
+ R(b, c, d, e, a, F1, K1, x[4]);
+ R(a, b, c, d, e, F1, K1, x[5]);
+ R(e, a, b, c, d, F1, K1, x[6]);
+ R(d, e, a, b, c, F1, K1, x[7]);
+ R(c, d, e, a, b, F1, K1, x[8]);
+ R(b, c, d, e, a, F1, K1, x[9]);
+ R(a, b, c, d, e, F1, K1, x[10]);
+ R(e, a, b, c, d, F1, K1, x[11]);
+ R(d, e, a, b, c, F1, K1, x[12]);
+ R(c, d, e, a, b, F1, K1, x[13]);
+ R(b, c, d, e, a, F1, K1, x[14]);
+ R(a, b, c, d, e, F1, K1, x[15]);
+ R(e, a, b, c, d, F1, K1, M(16));
+ R(d, e, a, b, c, F1, K1, M(17));
+ R(c, d, e, a, b, F1, K1, M(18));
+ R(b, c, d, e, a, F1, K1, M(19));
+ R(a, b, c, d, e, F2, K2, M(20));
+ R(e, a, b, c, d, F2, K2, M(21));
+ R(d, e, a, b, c, F2, K2, M(22));
+ R(c, d, e, a, b, F2, K2, M(23));
+ R(b, c, d, e, a, F2, K2, M(24));
+ R(a, b, c, d, e, F2, K2, M(25));
+ R(e, a, b, c, d, F2, K2, M(26));
+ R(d, e, a, b, c, F2, K2, M(27));
+ R(c, d, e, a, b, F2, K2, M(28));
+ R(b, c, d, e, a, F2, K2, M(29));
+ R(a, b, c, d, e, F2, K2, M(30));
+ R(e, a, b, c, d, F2, K2, M(31));
+ R(d, e, a, b, c, F2, K2, M(32));
+ R(c, d, e, a, b, F2, K2, M(33));
+ R(b, c, d, e, a, F2, K2, M(34));
+ R(a, b, c, d, e, F2, K2, M(35));
+ R(e, a, b, c, d, F2, K2, M(36));
+ R(d, e, a, b, c, F2, K2, M(37));
+ R(c, d, e, a, b, F2, K2, M(38));
+ R(b, c, d, e, a, F2, K2, M(39));
+ R(a, b, c, d, e, F3, K3, M(40));
+ R(e, a, b, c, d, F3, K3, M(41));
+ R(d, e, a, b, c, F3, K3, M(42));
+ R(c, d, e, a, b, F3, K3, M(43));
+ R(b, c, d, e, a, F3, K3, M(44));
+ R(a, b, c, d, e, F3, K3, M(45));
+ R(e, a, b, c, d, F3, K3, M(46));
+ R(d, e, a, b, c, F3, K3, M(47));
+ R(c, d, e, a, b, F3, K3, M(48));
+ R(b, c, d, e, a, F3, K3, M(49));
+ R(a, b, c, d, e, F3, K3, M(50));
+ R(e, a, b, c, d, F3, K3, M(51));
+ R(d, e, a, b, c, F3, K3, M(52));
+ R(c, d, e, a, b, F3, K3, M(53));
+ R(b, c, d, e, a, F3, K3, M(54));
+ R(a, b, c, d, e, F3, K3, M(55));
+ R(e, a, b, c, d, F3, K3, M(56));
+ R(d, e, a, b, c, F3, K3, M(57));
+ R(c, d, e, a, b, F3, K3, M(58));
+ R(b, c, d, e, a, F3, K3, M(59));
+ R(a, b, c, d, e, F4, K4, M(60));
+ R(e, a, b, c, d, F4, K4, M(61));
+ R(d, e, a, b, c, F4, K4, M(62));
+ R(c, d, e, a, b, F4, K4, M(63));
+ R(b, c, d, e, a, F4, K4, M(64));
+ R(a, b, c, d, e, F4, K4, M(65));
+ R(e, a, b, c, d, F4, K4, M(66));
+ R(d, e, a, b, c, F4, K4, M(67));
+ R(c, d, e, a, b, F4, K4, M(68));
+ R(b, c, d, e, a, F4, K4, M(69));
+ R(a, b, c, d, e, F4, K4, M(70));
+ R(e, a, b, c, d, F4, K4, M(71));
+ R(d, e, a, b, c, F4, K4, M(72));
+ R(c, d, e, a, b, F4, K4, M(73));
+ R(b, c, d, e, a, F4, K4, M(74));
+ R(a, b, c, d, e, F4, K4, M(75));
+ R(e, a, b, c, d, F4, K4, M(76));
+ R(d, e, a, b, c, F4, K4, M(77));
+ R(c, d, e, a, b, F4, K4, M(78));
+ R(b, c, d, e, a, F4, K4, M(79));
+
+ a = ctx->A += a;
+ b = ctx->B += b;
+ c = ctx->C += c;
+ d = ctx->D += d;
+ e = ctx->E += e;
+ }
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.h
new file mode 100644
index 00000000000..aa8ec20ed85
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/sha1.h
@@ -0,0 +1,85 @@
+/*
+ * Declarations of functions and data types used for SHA1 sum
+ * library functions.
+ *
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ * Copyright (C) 2000-2001, 2003, 2005-2006, 2008-2014 Free Software
+ * Foundation, Inc.
+ *
+ * This file is part of Gregorio.
+ * This file has been adapted from GNU coreutils to fit Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SHA1_H
+#define SHA1_H 1
+
+#include <stddef.h>
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#else
+#include <inttypes.h>
+#endif
+
+#define SHA1_DIGEST_SIZE 20
+
+/* Structure to save state of computation between the single steps. */
+struct sha1_ctx {
+ uint32_t A;
+ uint32_t B;
+ uint32_t C;
+ uint32_t D;
+ uint32_t E;
+
+ uint32_t total[2];
+ uint32_t buflen;
+ uint32_t buffer[32];
+};
+
+/* Initialize structure containing state of computation. */
+extern void sha1_init_ctx(struct sha1_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is necessary that LEN is a multiple of 64!!! */
+extern void sha1_process_block(const void *buffer, size_t len,
+ struct sha1_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is NOT required that LEN is a multiple of 64. */
+extern void sha1_process_bytes(const void *buffer, size_t len,
+ struct sha1_ctx *ctx);
+
+/* Process the remaining bytes in the buffer and put result from CTX
+ in first 20 bytes following RESBUF. The result is always in little
+ endian byte order, so that a byte-wise output yields to the wanted
+ ASCII representation of the message digest. */
+extern void *sha1_finish_ctx(struct sha1_ctx *ctx, void *resbuf);
+
+/* Put result from CTX in first 20 bytes following RESBUF. The result is
+ always in little endian byte order, so that a byte-wise output yields
+ to the wanted ASCII representation of the message digest. */
+extern void *sha1_read_ctx(const struct sha1_ctx *ctx, void *resbuf);
+
+/* Compute SHA1 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+extern void *sha1_buffer(const char *buffer, size_t len, void *resblock);
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.c
new file mode 100644
index 00000000000..e73ce97339a
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.c
@@ -0,0 +1,1707 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @file
+ * @brief This file contains a set of function to manipulate the gregorio
+ * structure.
+ *
+ * It starts by simple add/delete functions for almost all
+ * structs, and ends with more complex functions for manipulating
+ * horizontal episemus, keys, etc.
+ *
+ * The first functions are not commented, but they always act like
+ * this : we give them a pointer to the pointer to the current element
+ * (by element I mean a struct which can be gregorio_note,
+ * gregorio_element, etc.), they add an element and the update the
+ * pointer to the element so that it points to the new element (may
+ * seem a bit strange).
+ *
+ * All the delete functions are recursive and free all memory.
+ *
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+#include "characters.h"
+
+static gregorio_note *create_and_link_note(gregorio_note **current_note,
+ const gregorio_scanner_location *const loc)
+{
+ gregorio_note *note = calloc(1, sizeof(gregorio_note));
+ if (!note) {
+ gregorio_message(_("error in memory allocation"),
+ "create_and_link_note", VERBOSITY_FATAL, 0);
+ return NULL;
+ }
+
+ note->previous = *current_note;
+ note->next = NULL;
+ if (*current_note) {
+ (*current_note)->next = note;
+ }
+ *current_note = note;
+ note->src_line = loc->first_line;
+ note->src_column = loc->first_column;
+ note->src_offset = loc->first_offset;
+
+ return note;
+}
+
+void gregorio_position_h_episemus_above(gregorio_note *note, signed char height,
+ bool connect)
+{
+ assert(note && (note->type == GRE_NOTE || note->type == GRE_BAR));
+ note->h_episemus_above = height;
+ note->h_episemus_above_connect = connect;
+}
+
+static void set_h_episemus_above(gregorio_note *note, signed char height,
+ grehepisemus_size size, bool connect)
+{
+ gregorio_position_h_episemus_above(note, height, connect);
+ note->h_episemus_above_size = size;
+}
+
+void gregorio_position_h_episemus_below(gregorio_note *note, signed char height,
+ bool connect)
+{
+ assert(note && (note->type == GRE_NOTE || note->type == GRE_BAR));
+ note->h_episemus_below = height;
+ note->h_episemus_below_connect = connect;
+}
+
+static void set_h_episemus_below(gregorio_note *note, signed char height,
+ grehepisemus_size size, bool connect)
+{
+ gregorio_position_h_episemus_below(note, height, connect);
+ note->h_episemus_below_size = size;
+}
+
+void gregorio_add_note(gregorio_note **current_note, signed char pitch,
+ gregorio_shape shape, gregorio_sign signs,
+ gregorio_liquescentia liquescentia, gregorio_note *prototype,
+ const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element = create_and_link_note(current_note, loc);
+ if (element) {
+ element->type = GRE_NOTE;
+ element->u.note.pitch = pitch;
+ element->u.note.shape = shape;
+ element->signs = signs;
+ element->special_sign = _NO_SIGN;
+ element->u.note.liquescentia = liquescentia;
+ if (prototype) {
+ set_h_episemus_above(element, prototype->h_episemus_above,
+ prototype->h_episemus_above_size,
+ prototype->h_episemus_above_connect);
+ set_h_episemus_below(element, prototype->h_episemus_below,
+ prototype->h_episemus_below_size,
+ prototype->h_episemus_below_connect);
+ }
+ element->texverb = NULL;
+ element->choral_sign = NULL;
+ }
+}
+
+static void add_pitched_item_as_note(gregorio_note **current_note,
+ gregorio_type type, signed char pitch,
+ const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element = create_and_link_note(current_note, loc);
+ if (element) {
+ element->type = type;
+ element->u.note.pitch = pitch;
+ }
+}
+
+void gregorio_add_end_of_line_as_note(gregorio_note **current_note,
+ gregorio_type sub_type, const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element = create_and_link_note(current_note, loc);
+ if (element) {
+ element->type = GRE_END_OF_LINE;
+ element->u.other.sub_type = sub_type;
+ }
+}
+
+void gregorio_add_custo_as_note(gregorio_note **current_note,
+ const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element = create_and_link_note(current_note, loc);
+ if (element) {
+ element->type = GRE_CUSTOS;
+ }
+}
+
+void gregorio_add_manual_custos_as_note(gregorio_note **current_note,
+ signed char pitch, const gregorio_scanner_location *const loc)
+{
+ add_pitched_item_as_note(current_note, GRE_MANUAL_CUSTOS, pitch, loc);
+}
+
+void gregorio_add_clef_change_as_note(gregorio_note **current_note,
+ gregorio_type type, signed char clef_line,
+ const gregorio_scanner_location *const loc)
+{
+ assert(type == GRE_C_KEY_CHANGE || type == GRE_F_KEY_CHANGE
+ || type == GRE_C_KEY_CHANGE_FLATED
+ || type == GRE_F_KEY_CHANGE_FLATED);
+ add_pitched_item_as_note(current_note, type, clef_line, loc);
+}
+
+void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar,
+ const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element = create_and_link_note(current_note, loc);
+ if (element) {
+ element->type = GRE_BAR;
+ element->u.other.bar = bar;
+ }
+}
+
+void gregorio_add_alteration_as_note(gregorio_note **current_note,
+ gregorio_type type, signed char pitch,
+ const gregorio_scanner_location *const loc)
+{
+ assert(type == GRE_FLAT || type == GRE_SHARP || type == GRE_NATURAL);
+ add_pitched_item_as_note(current_note, type, pitch, loc);
+}
+
+void gregorio_add_space_as_note(gregorio_note **current_note,
+ gregorio_space space, const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element = create_and_link_note(current_note, loc);
+ if (element) {
+ element->type = GRE_SPACE;
+ element->u.other.space = space;
+ }
+}
+
+void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str,
+ gregorio_type type, const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element;
+ if (str == NULL) {
+ return;
+ }
+ element = create_and_link_note(current_note, loc);
+ assert(type == GRE_TEXVERB_GLYPH || type == GRE_TEXVERB_ELEMENT
+ || type == GRE_ALT);
+ if (element) {
+ element->type = type;
+ element->texverb = str;
+ }
+}
+
+void gregorio_add_nlba_as_note(gregorio_note **current_note, gregorio_nlba type,
+ const gregorio_scanner_location *const loc)
+{
+ gregorio_note *element = create_and_link_note(current_note, loc);
+ if (element) {
+ element->type = GRE_NLBA;
+ element->u.other.nlba = type;
+ }
+}
+
+void gregorio_add_texverb_to_note(gregorio_note **current_note, char *str)
+{
+ size_t len;
+ char *res;
+ if (str == NULL) {
+ return;
+ }
+ if (*current_note) {
+ if ((*current_note)->texverb) {
+ len = strlen((*current_note)->texverb) + strlen(str) + 1;
+ res = malloc(len * sizeof(char));
+ strcpy(res, (*current_note)->texverb);
+ strcat(res, str);
+ free((*current_note)->texverb);
+ (*current_note)->texverb = res;
+ } else {
+ (*current_note)->texverb = str;
+ }
+ }
+}
+
+void gregorio_add_cs_to_note(gregorio_note *const*const current_note,
+ char *const str, const bool nabc)
+{
+ if (*current_note) {
+ (*current_note)->choral_sign = str;
+ (*current_note)->choral_sign_is_nabc = nabc;
+ }
+}
+
+void gregorio_add_special_sign(gregorio_note *note, gregorio_sign sign)
+{
+ if (!note) {
+ /* error */
+ return;
+ }
+ note->special_sign = sign;
+}
+
+static void fix_punctum_cavum_inclinatum_liquescentia(gregorio_note *const note)
+{
+ switch (note->u.note.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ case L_AUCTUS_DESCENDENS:
+ case L_AUCTA:
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ note->u.note.liquescentia = L_AUCTA;
+ break;
+ default:
+ note->u.note.liquescentia = L_NO_LIQUESCENTIA;
+ break;
+ }
+}
+
+void gregorio_change_shape(gregorio_note *note, gregorio_shape shape)
+{
+ if (!note || note->type != GRE_NOTE) {
+ gregorio_message(_("trying to change the shape of something that is "
+ "not a note"), "change_shape", VERBOSITY_ERROR, 0);
+ return;
+ }
+ switch (note->u.note.shape) {
+ case S_PUNCTUM_INCLINATUM:
+ if (shape == S_PUNCTUM_CAVUM) {
+ note->u.note.shape = S_PUNCTUM_CAVUM_INCLINATUM;
+ fix_punctum_cavum_inclinatum_liquescentia(note);
+ break;
+ }
+ /* else fall through */
+
+ default:
+ note->u.note.shape = shape;
+ switch (shape) {
+ case S_STROPHA:
+ case S_DISTROPHA:
+ case S_TRISTROPHA:
+ switch (note->u.note.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ case L_AUCTUS_DESCENDENS:
+ note->u.note.liquescentia = L_AUCTA;
+ break;
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS;
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case S_ORISCUS:
+ switch (note->u.note.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ case L_AUCTUS_DESCENDENS:
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ note->u.note.shape = S_ORISCUS_AUCTUS;
+ break;
+ case L_DEMINUTUS:
+ case L_DEMINUTUS_INITIO_DEBILIS:
+ note->u.note.shape = S_ORISCUS_DEMINUTUS;
+ break;
+ default:
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+ break;
+ }
+}
+
+void gregorio_add_liquescentia(gregorio_note *note, gregorio_liquescentia liq)
+{
+ if (!note || note->type != GRE_NOTE) {
+ gregorio_message(_("trying to make a liquescence on something that "
+ "is not a note"), "add_liquescentia", VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (is_initio_debilis(liq)) {
+ switch (liq) {
+ case L_DEMINUTUS:
+ note->u.note.liquescentia = L_DEMINUTUS_INITIO_DEBILIS;
+ break;
+ case L_AUCTUS_ASCENDENS:
+ note->u.note.liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS;
+ break;
+ case L_AUCTUS_DESCENDENS:
+ note->u.note.liquescentia = L_AUCTUS_DESCENDENS_INITIO_DEBILIS;
+ break;
+ case L_AUCTA:
+ note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS;
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+ } else {
+ note->u.note.liquescentia = liq;
+ }
+ switch (note->u.note.shape) {
+ case S_STROPHA:
+ case S_DISTROPHA:
+ case S_TRISTROPHA:
+ switch (note->u.note.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ case L_AUCTUS_DESCENDENS:
+ note->u.note.liquescentia = L_AUCTA;
+ break;
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS;
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case S_ORISCUS:
+ switch (note->u.note.liquescentia) {
+ case L_AUCTUS_ASCENDENS:
+ case L_AUCTUS_DESCENDENS:
+ case L_AUCTUS_ASCENDENS_INITIO_DEBILIS:
+ case L_AUCTUS_DESCENDENS_INITIO_DEBILIS:
+ note->u.note.shape = S_ORISCUS_AUCTUS;
+ break;
+ case L_DEMINUTUS:
+ case L_DEMINUTUS_INITIO_DEBILIS:
+ note->u.note.shape = S_ORISCUS_DEMINUTUS;
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case S_PUNCTUM_CAVUM_INCLINATUM:
+ fix_punctum_cavum_inclinatum_liquescentia(note);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void apply_auto_h_episemus(gregorio_note *const note,
+ const grehepisemus_size size, const bool disable_bridge)
+{
+ if (note->h_episemus_above == HEPISEMUS_NONE
+ && note->h_episemus_below == HEPISEMUS_NONE) {
+ /* if both are unset, set both to auto */
+ set_h_episemus_above(note, HEPISEMUS_AUTO, size, !disable_bridge);
+ set_h_episemus_below(note, HEPISEMUS_AUTO, size, !disable_bridge);
+ } else if (note->h_episemus_above == HEPISEMUS_AUTO
+ && note->h_episemus_below == HEPISEMUS_AUTO) {
+ /* if both are auto, then force both */
+ /* the upper episemus keeps its settings */
+ note->h_episemus_above = HEPISEMUS_FORCED;
+
+ set_h_episemus_below(note, HEPISEMUS_FORCED, size, !disable_bridge);
+ } else {
+ /* force whichever is not already forced */
+ if (note->h_episemus_above != HEPISEMUS_FORCED) {
+ set_h_episemus_above(note, HEPISEMUS_FORCED, size, !disable_bridge);
+ }
+ if (note->h_episemus_below != HEPISEMUS_FORCED) {
+ set_h_episemus_below(note, HEPISEMUS_FORCED, size, !disable_bridge);
+ }
+ }
+}
+
+/**********************************
+ *
+ * Activate_isolated_h_episemus is used when we see an "isolated"
+ * horizontal episemus: when we type ab__ lex see a then b then _ then _, so
+ * we must put the _ on the a (kind of backward process), and say the
+ * the episemus on the b is a multi episemus. Here n is the length of
+ * the isolated episemus we found (can be up to 4).
+ *
+ *********************************/
+static void gregorio_activate_isolated_h_episemus(gregorio_note *note,
+ const grehepisemus_size size, const bool disable_bridge, int n)
+{
+ if (!note) {
+ gregorio_message(ngt_("isolated horizontal episemus at the beginning "
+ "of a note sequence, ignored",
+ "isolated horizontal episemus at the beginning of a note "
+ "sequence, ignored", n), "activate_h_isolated_episemus",
+ VERBOSITY_WARNING, 0);
+ return;
+ }
+ if (note->type != GRE_NOTE) {
+ gregorio_message(ngt_("isolated horizontal episemus after something "
+ "that is not a note, ignored",
+ "isolated horizontal episemus after something that is not "
+ "a note, ignored", n), "activate_h_isolated_episemus",
+ VERBOSITY_WARNING, 0);
+ return;
+ }
+ for (; n > 0; --n) {
+ note = note->previous;
+ if (!note || note->type != GRE_NOTE) {
+ gregorio_message(_("found more horizontal episemus than notes "
+ "able to be under"), "activate_h_isolated_episemus",
+ VERBOSITY_WARNING, 0);
+ return;
+ }
+ }
+ apply_auto_h_episemus(note, size, disable_bridge);
+}
+
+void gregorio_add_h_episemus(gregorio_note *note,
+ grehepisemus_size size, gregorio_vposition vposition,
+ bool disable_bridge, unsigned int *nbof_isolated_episemus)
+{
+ if (!note || (note->type != GRE_NOTE && note->type != GRE_BAR)) {
+ gregorio_message(_("trying to add a horizontal episemus on something "
+ "that is not a note"), "add_h_episemus",
+ VERBOSITY_ERROR, 0);
+ return;
+ }
+ if (!nbof_isolated_episemus) {
+ gregorio_message(_("NULL argument nbof_isolated_episemus"),
+ "add_h_episemus", VERBOSITY_FATAL, 0);
+ return;
+ }
+ if (vposition && *nbof_isolated_episemus) {
+ gregorio_message(_("trying to add a forced horizontal episemus on a "
+ "note which already has an automatic horizontal "
+ "episemus"), "add_h_episemus", VERBOSITY_ERROR, 0);
+ return;
+ }
+
+ if (vposition || !*nbof_isolated_episemus) {
+ switch (vposition) {
+ case VPOS_ABOVE:
+ set_h_episemus_above(note, HEPISEMUS_FORCED, size, !disable_bridge);
+ break;
+
+ case VPOS_BELOW:
+ set_h_episemus_below(note, HEPISEMUS_FORCED, size, !disable_bridge);
+ break;
+
+ default: /* VPOS_AUTO */
+ apply_auto_h_episemus(note, size, disable_bridge);
+ *nbof_isolated_episemus = 1;
+ break;
+ }
+ } else {
+ gregorio_activate_isolated_h_episemus(note, size, disable_bridge,
+ (*nbof_isolated_episemus)++);
+ }
+}
+
+void gregorio_add_sign(gregorio_note *note, gregorio_sign sign,
+ gregorio_vposition vposition)
+{
+ if (!note) {
+ /* error */
+ return;
+ }
+ switch (sign) {
+ case _PUNCTUM_MORA:
+ switch (note->signs) {
+ case _NO_SIGN:
+ note->signs = _PUNCTUM_MORA;
+ break;
+ case _V_EPISEMUS:
+ note->signs = _V_EPISEMUS_PUNCTUM_MORA;
+ break;
+ case _PUNCTUM_MORA:
+ note->signs = _AUCTUM_DUPLEX;
+ break;
+ case _V_EPISEMUS_PUNCTUM_MORA:
+ note->signs = _V_EPISEMUS_AUCTUM_DUPLEX;
+ break;
+ default:
+ break;
+ }
+
+ note->mora_vposition = vposition;
+ break;
+
+ case _V_EPISEMUS:
+ switch (note->signs) {
+ case _NO_SIGN:
+ note->signs = _V_EPISEMUS;
+ break;
+ case _PUNCTUM_MORA:
+ note->signs = _V_EPISEMUS_PUNCTUM_MORA;
+ break;
+ case _AUCTUM_DUPLEX:
+ note->signs = _V_EPISEMUS_AUCTUM_DUPLEX;
+ break;
+ default:
+ break;
+ }
+
+ if (note->type == GRE_NOTE && vposition) {
+ note->v_episemus_height = note->u.note.pitch + vposition;
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void gregorio_go_to_first_note(gregorio_note **note)
+{
+ gregorio_note *tmp;
+ if (!*note) {
+ return;
+ }
+ tmp = *note;
+ while (tmp->previous) {
+ tmp = tmp->previous;
+ }
+ *note = tmp;
+}
+
+static __inline void free_one_note(gregorio_note *note)
+{
+ free(note->texverb);
+ free(note->choral_sign);
+ free(note);
+}
+
+void gregorio_free_one_note(gregorio_note **note)
+{
+ gregorio_note *next = NULL;
+ if (!note || !*note) {
+ return;
+ }
+ if ((*note)->next) {
+ (*note)->next->previous = NULL;
+ next = (*note)->next;
+ }
+ if ((*note)->previous) {
+ (*note)->previous->next = NULL;
+ }
+ free_one_note(*note);
+ *note = next;
+}
+
+static void gregorio_free_notes(gregorio_note **note)
+{
+ gregorio_note *tmp;
+ while (*note) {
+ tmp = (*note)->next;
+ free_one_note(*note);
+ *note = tmp;
+ }
+}
+
+static gregorio_glyph *create_and_link_glyph(gregorio_glyph **current_glyph)
+{
+ gregorio_glyph *glyph = calloc(1, sizeof(gregorio_glyph));
+ if (!glyph) {
+ gregorio_message(_("error in memory allocation"),
+ "create_and_link_glyph", VERBOSITY_FATAL, 0);
+ return NULL;
+ }
+
+ glyph->previous = *current_glyph;
+ glyph->next = NULL;
+ if (*current_glyph) {
+ (*current_glyph)->next = glyph;
+ }
+ *current_glyph = glyph;
+
+ return glyph;
+}
+
+void gregorio_add_glyph(gregorio_glyph **current_glyph,
+ gregorio_glyph_type type, gregorio_note *first_note,
+ gregorio_liquescentia liquescentia)
+{
+ gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph);
+ if (next_glyph) {
+ next_glyph->type = GRE_GLYPH;
+ next_glyph->u.notes.glyph_type = type;
+ next_glyph->u.notes.liquescentia = liquescentia;
+ next_glyph->u.notes.first_note = first_note;
+ }
+}
+
+void gregorio_add_pitched_element_as_glyph(gregorio_glyph **current_glyph,
+ gregorio_type type, signed char pitch, bool flatted_key,
+ bool force_pitch, char *texverb)
+{
+ gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph);
+ assert(type == GRE_C_KEY_CHANGE || type == GRE_F_KEY_CHANGE
+ || type == GRE_C_KEY_CHANGE_FLATED || type == GRE_F_KEY_CHANGE_FLATED
+ || type == GRE_CUSTOS || type == GRE_FLAT || type == GRE_NATURAL
+ || type == GRE_SHARP);
+ if (next_glyph) {
+ next_glyph->type = type;
+ next_glyph->u.misc.pitched.pitch = pitch;
+ next_glyph->u.misc.pitched.flatted_key = flatted_key;
+ next_glyph->u.misc.pitched.force_pitch = force_pitch;
+ next_glyph->texverb = texverb;
+ }
+}
+
+void gregorio_add_unpitched_element_as_glyph(gregorio_glyph **current_glyph,
+ gregorio_type type, gregorio_extra_info info, gregorio_sign sign,
+ char *texverb)
+{
+ gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph);
+ assert(type != GRE_NOTE && type != GRE_GLYPH && type != GRE_ELEMENT
+ && type != GRE_C_KEY_CHANGE && type != GRE_F_KEY_CHANGE
+ && type != GRE_C_KEY_CHANGE_FLATED && type != GRE_F_KEY_CHANGE_FLATED
+ && type != GRE_CUSTOS && type != GRE_FLAT && type != GRE_NATURAL
+ && type != GRE_SHARP);
+ if (next_glyph) {
+ next_glyph->type = type;
+ next_glyph->u.misc.unpitched.info = info;
+ next_glyph->u.misc.unpitched.special_sign = sign;
+ next_glyph->texverb = texverb;
+ }
+}
+
+void gregorio_go_to_first_glyph(gregorio_glyph **glyph)
+{
+ gregorio_glyph *tmp;
+ if (!*glyph) {
+ return;
+ }
+ tmp = *glyph;
+ while (tmp->previous) {
+ tmp = tmp->previous;
+ }
+ *glyph = tmp;
+}
+
+static __inline void free_one_glyph(gregorio_glyph *glyph)
+{
+ free(glyph->texverb);
+ if (glyph->type == GRE_GLYPH) {
+ gregorio_free_notes(&glyph->u.notes.first_note);
+ }
+ free(glyph);
+}
+
+void gregorio_free_one_glyph(gregorio_glyph **glyph)
+{
+ gregorio_glyph *next = NULL;
+ if (!glyph || !*glyph) {
+ return;
+ }
+ if ((*glyph)->next) {
+ (*glyph)->next->previous = NULL;
+ next = (*glyph)->next;
+ }
+ if ((*glyph)->previous) {
+ (*glyph)->previous->next = NULL;
+ }
+ free_one_glyph(*glyph);
+ *glyph = next;
+}
+
+static void gregorio_free_glyphs(gregorio_glyph **glyph)
+{
+ gregorio_glyph *next_glyph;
+ if (!glyph || !*glyph) {
+ return;
+ }
+ while (*glyph) {
+ next_glyph = (*glyph)->next;
+ free_one_glyph(*glyph);
+ *glyph = next_glyph;
+ }
+}
+
+static gregorio_element *create_and_link_element(gregorio_element
+ **current_element)
+{
+ gregorio_element *element = calloc(1, sizeof(gregorio_element));
+ if (!element) {
+ gregorio_message(_("error in memory allocation"),
+ "create_and_link_element", VERBOSITY_FATAL, 0);
+ return NULL;
+ }
+
+ element->previous = *current_element;
+ element->next = NULL;
+ if (*current_element) {
+ (*current_element)->next = element;
+ }
+ *current_element = element;
+
+ return element;
+}
+
+void gregorio_add_element(gregorio_element **current_element,
+ gregorio_glyph *first_glyph)
+{
+ gregorio_element *next = create_and_link_element(current_element);
+ if (next) {
+ next->type = GRE_ELEMENT;
+ next->u.first_glyph = first_glyph;
+ }
+}
+
+void gregorio_add_misc_element(gregorio_element **current_element,
+ gregorio_type type, gregorio_misc_element_info info, char *texverb)
+{
+ gregorio_element *special = create_and_link_element(current_element);
+ if (special) {
+ special->type = type;
+ special->u.misc = info;
+ special->texverb = texverb;
+ }
+}
+
+static __inline void free_one_element(gregorio_element *element)
+{
+ size_t i;
+ free(element->texverb);
+ for (i = 0; i < element->nabc_lines; i++) {
+ free(element->nabc[i]);
+ }
+ if (element->type == GRE_ELEMENT) {
+ gregorio_free_glyphs(&element->u.first_glyph);
+ }
+ free(element);
+}
+
+static void gregorio_free_one_element(gregorio_element **element)
+{
+ gregorio_element *next = NULL;
+ if (!element || !*element) {
+ return;
+ }
+ if ((*element)->next) {
+ (*element)->next->previous = NULL;
+ next = (*element)->next;
+ }
+ if ((*element)->previous) {
+ (*element)->previous->next = NULL;
+ }
+ free_one_element(*element);
+ *element = next;
+}
+
+static void gregorio_free_elements(gregorio_element **element)
+{
+ gregorio_element *next;
+ if (!element || !*element) {
+ return;
+ }
+ while (*element) {
+ next = (*element)->next;
+ free_one_element(*element);
+ *element = next;
+ }
+}
+
+void gregorio_add_character(gregorio_character **current_character,
+ grewchar wcharacter)
+{
+ gregorio_character *element =
+ (gregorio_character *) calloc(1, sizeof(gregorio_character));
+ if (!element) {
+ gregorio_message(_("error in memory allocation"),
+ "gregorio_add_character", VERBOSITY_FATAL, 0);
+ return;
+ }
+ element->is_character = 1;
+ element->cos.character = wcharacter;
+ element->next_character = NULL;
+ element->previous_character = *current_character;
+ if (*current_character) {
+ (*current_character)->next_character = element;
+ }
+ *current_character = element;
+}
+
+static void gregorio_free_one_character(gregorio_character *current_character)
+{
+ free(current_character);
+}
+
+static void gregorio_free_characters(gregorio_character *current_character)
+{
+ gregorio_character *next_character;
+ if (!current_character) {
+ return;
+ }
+ while (current_character) {
+ next_character = current_character->next_character;
+ gregorio_free_one_character(current_character);
+ current_character = next_character;
+ }
+}
+
+void gregorio_go_to_first_character(gregorio_character **character)
+{
+ gregorio_character *tmp;
+ if (!character || !*character) {
+ return;
+ }
+ tmp = *character;
+ while (tmp->previous_character) {
+ tmp = tmp->previous_character;
+ }
+ *character = tmp;
+}
+
+void gregorio_begin_style(gregorio_character **current_character,
+ grestyle_style style)
+{
+ gregorio_character *element =
+ (gregorio_character *) calloc(1, sizeof(gregorio_character));
+ if (!element) {
+ gregorio_message(_("error in memory allocation"),
+ "add_note", VERBOSITY_FATAL, 0);
+ return;
+ }
+ element->is_character = 0;
+ element->cos.s.type = ST_T_BEGIN;
+ element->cos.s.style = style;
+ element->previous_character = *current_character;
+ element->next_character = NULL;
+ if (*current_character) {
+ (*current_character)->next_character = element;
+ }
+ *current_character = element;
+}
+
+void gregorio_end_style(gregorio_character **current_character,
+ grestyle_style style)
+{
+ gregorio_character *element =
+ (gregorio_character *) calloc(1, sizeof(gregorio_character));
+ if (!element) {
+ gregorio_message(_("error in memory allocation"),
+ "add_note", VERBOSITY_FATAL, 0);
+ return;
+ }
+ element->is_character = 0;
+ element->cos.s.type = ST_T_END;
+ element->cos.s.style = style;
+ element->next_character = NULL;
+ element->previous_character = *current_character;
+ if (*current_character) {
+ (*current_character)->next_character = element;
+ }
+ *current_character = element;
+}
+
+void gregorio_add_syllable(gregorio_syllable **current_syllable,
+ int number_of_voices, gregorio_element *elements[],
+ gregorio_character *first_character,
+ gregorio_character *first_translation_character,
+ gregorio_word_position position, char *abovelinestext,
+ gregorio_tr_centering translation_type, gregorio_nlba no_linebreak_area,
+ gregorio_euouae euouae, const gregorio_scanner_location *const loc)
+{
+ gregorio_syllable *next;
+ gregorio_element **tab;
+ int i;
+ if (number_of_voices > MAX_NUMBER_OF_VOICES) {
+ gregorio_message(_("too many voices"), "add_syllable", VERBOSITY_FATAL,
+ 0);
+ return;
+ }
+ next = calloc(1, sizeof(gregorio_syllable));
+ if (!next) {
+ gregorio_message(_("error in memory allocation"), "add_syllable",
+ VERBOSITY_FATAL, 0);
+ return;
+ }
+ next->type = GRE_SYLLABLE;
+ next->special_sign = _NO_SIGN;
+ next->position = position;
+ next->no_linebreak_area = no_linebreak_area;
+ next->euouae = euouae;
+ next->text = first_character;
+ next->translation = first_translation_character;
+ next->translation_type = translation_type;
+ next->abovelinestext = abovelinestext;
+ if (loc) {
+ next->src_line = loc->first_line;
+ next->src_column = loc->first_column;
+ next->src_offset = loc->first_offset;
+ }
+ next->next_syllable = NULL;
+ next->previous_syllable = *current_syllable;
+ tab = (gregorio_element **) malloc(number_of_voices *
+ sizeof(gregorio_element *));
+ if (elements) {
+ for (i = 0; i < number_of_voices; i++) {
+ tab[i] = elements[i];
+ }
+ } else {
+ for (i = 0; i < number_of_voices; i++) {
+ tab[i] = NULL;
+ }
+ }
+ next->elements = tab;
+ if (*current_syllable) {
+ (*current_syllable)->next_syllable = next;
+ }
+ *current_syllable = next;
+}
+
+static void gregorio_free_one_syllable(gregorio_syllable **syllable,
+ int number_of_voices)
+{
+ int i;
+ gregorio_syllable *next;
+ if (!syllable || !*syllable) {
+ gregorio_message(_("function called with NULL argument"),
+ "free_one_syllable", VERBOSITY_WARNING, 0);
+ return;
+ }
+ for (i = 0; i < number_of_voices; i++) {
+ gregorio_free_elements((struct gregorio_element **)
+ &((*syllable)->elements[i]));
+ }
+ if ((*syllable)->text) {
+ gregorio_free_characters((*syllable)->text);
+ }
+ if ((*syllable)->translation) {
+ gregorio_free_characters((*syllable)->translation);
+ }
+ free((*syllable)->abovelinestext);
+ next = (*syllable)->next_syllable;
+ free((*syllable)->elements);
+ free(*syllable);
+ *syllable = next;
+}
+
+static void gregorio_free_syllables(gregorio_syllable **syllable,
+ int number_of_voices)
+{
+ if (!syllable || !*syllable) {
+ gregorio_message(_("function called with NULL argument"),
+ "free_syllables", VERBOSITY_WARNING, 0);
+ return;
+ }
+ while (*syllable) {
+ gregorio_free_one_syllable(syllable, number_of_voices);
+ }
+}
+
+static void gregorio_source_info_init(source_info *si)
+{
+ si->author = NULL;
+ si->date = NULL;
+ si->manuscript = NULL;
+ si->manuscript_reference = NULL;
+ si->manuscript_storage_place = NULL;
+ si->transcriber = NULL;
+ si->transcription_date = NULL;
+ si->book = NULL;
+}
+
+gregorio_score *gregorio_new_score(void)
+{
+ int annotation_num;
+ gregorio_score *new_score = calloc(1, sizeof(gregorio_score));
+ new_score->first_syllable = NULL;
+ new_score->number_of_voices = 1;
+ new_score->name = NULL;
+ new_score->gabc_copyright = NULL;
+ new_score->score_copyright = NULL;
+ new_score->initial_style = NORMAL_INITIAL;
+ new_score->office_part = NULL;
+ new_score->occasion = NULL;
+ new_score->meter = NULL;
+ new_score->commentary = NULL;
+ new_score->arranger = NULL;
+ gregorio_source_info_init(&new_score->si);
+ new_score->first_voice_info = NULL;
+ new_score->mode = 0;
+ new_score->gregoriotex_font = NULL;
+ new_score->user_notes = NULL;
+ for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) {
+ new_score->annotation[annotation_num] = NULL;
+ }
+ return new_score;
+}
+
+static void gregorio_free_source_info(source_info *si)
+{
+ if (si->date) {
+ free(si->date);
+ }
+ if (si->author) {
+ free(si->author);
+ }
+ if (si->manuscript) {
+ free(si->manuscript);
+ }
+ if (si->manuscript_reference) {
+ free(si->manuscript_reference);
+ }
+ if (si->manuscript_storage_place) {
+ free(si->manuscript_storage_place);
+ }
+ if (si->transcriber) {
+ free(si->transcriber);
+ }
+ if (si->transcription_date) {
+ free(si->transcription_date);
+ }
+}
+
+static void gregorio_free_score_infos(gregorio_score *score)
+{
+ int annotation_num;
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_free_score_infos", VERBOSITY_WARNING, 0);
+ return;
+ }
+ if (score->name) {
+ free(score->name);
+ }
+ if (score->office_part) {
+ free(score->office_part);
+ }
+ if (score->occasion) {
+ free(score->occasion);
+ }
+ if (score->meter) {
+ free(score->meter);
+ }
+ if (score->commentary) {
+ free(score->commentary);
+ }
+ if (score->arranger) {
+ free(score->arranger);
+ }
+ if (score->user_notes) {
+ free(score->user_notes);
+ }
+ for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) {
+ if (score->annotation[annotation_num]) {
+ free(score->annotation[annotation_num]);
+ }
+ }
+ gregorio_free_source_info(&score->si);
+ if (score->first_voice_info) {
+ gregorio_free_voice_infos(score->first_voice_info);
+ }
+}
+
+void gregorio_free_score(gregorio_score *score)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "free_one_syllable", VERBOSITY_WARNING, 0);
+ return;
+ }
+ gregorio_free_syllables(&(score->first_syllable), score->number_of_voices);
+ gregorio_free_score_infos(score);
+ free(score);
+}
+
+void gregorio_set_score_name(gregorio_score *score, char *name)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_name", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->name = name;
+}
+
+void gregorio_set_score_gabc_copyright(gregorio_score *score,
+ char *gabc_copyright)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_gabc_copyright", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->gabc_copyright = gabc_copyright;
+}
+
+void gregorio_set_score_score_copyright(gregorio_score *score,
+ char *score_copyright)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_score_copyright", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->score_copyright = score_copyright;
+}
+
+void gregorio_set_score_office_part(gregorio_score *score, char *office_part)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_office_part", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->office_part = office_part;
+}
+
+void gregorio_set_score_occasion(gregorio_score *score, char *occasion)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_occasion", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->occasion = occasion;
+}
+
+void gregorio_set_score_meter(gregorio_score *score, char *meter)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_meter", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->meter = meter;
+}
+
+void gregorio_set_score_commentary(gregorio_score *score, char *commentary)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_commentary", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->commentary = commentary;
+}
+
+void gregorio_set_score_arranger(gregorio_score *score, char *arranger)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_arranger", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->arranger = arranger;
+}
+
+void gregorio_set_score_number_of_voices(gregorio_score *score,
+ int number_of_voices)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_number_of_voices", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->number_of_voices = number_of_voices;
+}
+
+void gregorio_set_score_user_notes(gregorio_score *score, char *user_notes)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_name", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->user_notes = user_notes;
+}
+
+void gregorio_add_voice_info(gregorio_voice_info **current_voice_info)
+{
+ gregorio_voice_info *next = calloc(1, sizeof(gregorio_voice_info));
+ next->initial_key = NO_KEY;
+ next->flatted_key = false;
+ next->style = NULL;
+ next->virgula_position = NULL;
+ next->next_voice_info = NULL;
+ if (*current_voice_info) {
+ (*current_voice_info)->next_voice_info = next;
+ }
+ *current_voice_info = next;
+}
+
+void gregorio_free_voice_infos(gregorio_voice_info *voice_info)
+{
+ gregorio_voice_info *next;
+ if (!voice_info) {
+ gregorio_message(_("function called with NULL argument"),
+ "free_voice_info", VERBOSITY_WARNING, 0);
+ return;
+ }
+ while (voice_info) {
+ if (voice_info->style) {
+ free(voice_info->style);
+ }
+ if (voice_info->virgula_position) {
+ free(voice_info->virgula_position);
+ }
+ next = voice_info->next_voice_info;
+ free(voice_info);
+ voice_info = next;
+ }
+}
+
+/*
+ * a set of quite useless function
+ */
+
+void gregorio_set_score_annotation(gregorio_score *score, char *annotation)
+{
+ int annotation_num;
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_annotation", VERBOSITY_WARNING, 0);
+ return;
+ }
+ /* save the annotation in the first spare place. */
+ for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) {
+ if (score->annotation[annotation_num] == NULL) {
+ score->annotation[annotation_num] = annotation;
+ break;
+ }
+ }
+}
+
+void gregorio_set_score_author(gregorio_score *score, char *author)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_author", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.author = author;
+}
+
+void gregorio_set_score_date(gregorio_score *score, char *date)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_date", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.date = date;
+}
+
+void gregorio_set_score_manuscript(gregorio_score *score, char *manuscript)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_manuscript", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.manuscript = manuscript;
+}
+
+void gregorio_set_score_manuscript_reference(gregorio_score *score,
+ char *manuscript_reference)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_reference", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.manuscript_reference = manuscript_reference;
+}
+
+void gregorio_set_score_manuscript_storage_place(gregorio_score *score,
+ char *manuscript_storage_place)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_manuscript_storage_place",
+ VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.manuscript_storage_place = manuscript_storage_place;
+}
+
+void gregorio_set_score_book(gregorio_score *score, char *book)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_book", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.book = book;
+}
+
+void gregorio_set_score_transcriber(gregorio_score *score, char *transcriber)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_transcriber", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.transcriber = transcriber;
+}
+
+void gregorio_set_score_transcription_date(gregorio_score *score,
+ char *transcription_date)
+{
+ if (!score) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_score_transcription_date", VERBOSITY_WARNING, 0);
+ return;
+ }
+ score->si.transcription_date = transcription_date;
+}
+
+void gregorio_set_voice_style(gregorio_voice_info *voice_info, char *style)
+{
+ if (!voice_info) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_voice_style", VERBOSITY_WARNING, 0);
+ return;
+ }
+ voice_info->style = style;
+}
+
+void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info,
+ char *virgula_position)
+{
+ if (!voice_info) {
+ gregorio_message(_("function called with NULL argument"),
+ "gregorio_set_voice_virgula_position", VERBOSITY_WARNING, 0);
+ return;
+ }
+ voice_info->virgula_position = virgula_position;
+}
+
+/**********************************
+ *
+ * A function to build an integer from a key, very useful to represent
+ * it in the structure.
+ *
+ *The representation is :
+ *
+ * * 1 for a C key on the first (bottom) line
+ * * 3 for a C key on the second line
+ * * 5 for a C key on the third line (default key)
+ * * 7 for a C key on the fourth line
+ *
+ * * -2 for a F key on the first line
+ * * 0 for a F key on the second line
+ * * 2 for a F key on the third line
+ * * 4 for a F key on the fourth line
+ *
+ *********************************/
+
+int gregorio_calculate_new_key(char step, int line)
+{
+ switch (step) {
+ case C_KEY:
+ return (2 * line) - 1;
+ break;
+ case F_KEY:
+ return (2 * line) - 4;
+ break;
+ default:
+ gregorio_message(_("can't calculate key"),
+ "gregorio_calculate_new_key", VERBOSITY_ERROR, 0);
+ return NO_KEY;
+ }
+}
+
+/**********************************
+ *
+ * The reverse function of the preceeding : give step (c or f) and
+ * line (1-4) from an integer representing the key.
+ *
+ *********************************/
+
+void gregorio_det_step_and_line_from_key(int key, char *step, int *line)
+{
+ switch (key) {
+ case -2:
+ *step = 'f';
+ *line = 1;
+ break;
+ case 0:
+ *step = 'f';
+ *line = 2;
+ break;
+ case 2:
+ *step = 'f';
+ *line = 3;
+ break;
+ case 4:
+ *step = 'f';
+ *line = 4;
+ break;
+ case 1:
+ *step = 'c';
+ *line = 1;
+ break;
+ case 3:
+ *step = 'c';
+ *line = 2;
+ break;
+ case 5:
+ *step = 'c';
+ *line = 3;
+ break;
+ case 7:
+ *step = 'c';
+ *line = 4;
+ break;
+ default:
+ *step = '?';
+ *line = 0;
+ gregorio_message(_("can't determine step and line of the key"),
+ "gregorio_det_step_and_line_from_key", VERBOSITY_ERROR, 0);
+ return;
+ }
+}
+
+static signed char gregorio_syllable_first_note(gregorio_syllable *syllable)
+{
+ gregorio_element *element;
+ gregorio_glyph *glyph;
+ if (!syllable) {
+ gregorio_message(_("called with a NULL argument"),
+ "gregorio_syllable_first_note", VERBOSITY_ERROR, 0);
+ }
+ element = syllable->elements[0];
+ while (element) {
+ if (element->type == GRE_CUSTOS) {
+ return element->u.misc.pitched.pitch;
+ }
+ if (element->type == GRE_ELEMENT && element->u.first_glyph) {
+ glyph = element->u.first_glyph;
+ while (glyph) {
+ if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) {
+ assert(glyph->u.notes.first_note->type == GRE_NOTE);
+ return glyph->u.notes.first_note->u.note.pitch;
+ }
+ glyph = glyph->next;
+ }
+ }
+ element = element->next;
+ }
+ return 0;
+}
+
+signed char gregorio_determine_next_pitch(gregorio_syllable *syllable,
+ gregorio_element *element, gregorio_glyph *glyph)
+{
+ signed char temp;
+ if (!element || !syllable) {
+ gregorio_message(_("called with a NULL argument"),
+ "gregorio_determine_next_pitch", VERBOSITY_ERROR, 0);
+ return DUMMY_PITCH;
+ }
+ /* we first explore the next glyphs to find a note, if there is one */
+ if (glyph) {
+ glyph = glyph->next;
+ while (glyph) {
+ if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) {
+ assert(glyph->u.notes.first_note->type == GRE_NOTE);
+ return glyph->u.notes.first_note->u.note.pitch;
+ }
+ glyph = glyph->next;
+ }
+ }
+ /* then we do the same with the elements */
+ element = element->next;
+ while (element) {
+ if (element->type == GRE_CUSTOS) {
+ return element->u.misc.pitched.pitch;
+ }
+ if (element->type == GRE_ELEMENT && element->u.first_glyph) {
+ glyph = element->u.first_glyph;
+ while (glyph) {
+ if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) {
+ assert(glyph->u.notes.first_note->type == GRE_NOTE);
+ return glyph->u.notes.first_note->u.note.pitch;
+ }
+ glyph = glyph->next;
+ }
+ }
+ element = element->next;
+ }
+
+ /* then we do the same with the syllables */
+ syllable = syllable->next_syllable;
+ while (syllable) {
+ /* we call another function that will return the pitch of the first
+ * note if syllable has a note, and 0 else */
+ temp = gregorio_syllable_first_note(syllable);
+ if (temp) {
+ return temp;
+ }
+ syllable = syllable->next_syllable;
+ }
+ /* here it means that there is no next note, so we return a stupid value,
+ * but it won' t be used */
+ return DUMMY_PITCH;
+}
+
+/**********************************
+ *
+ * A function that may be useful (used in xml-write) : we have a
+ * tabular of alterations (we must remember all alterations on all
+ * notes all the time, they are reinitialized when a bar is found),
+ * and we assign all of them to NO_ALTERATION.
+ *
+ *This function works in fact with a tabular of tabular, one per
+ *voice, for polyphony.
+ *
+ *********************************/
+
+void gregorio_reinitialize_alterations(char alterations[][13],
+ int number_of_voices)
+{
+ int i;
+ int j;
+ for (j = 0; j < number_of_voices; j++) {
+ for (i = 0; i < 13; i++) {
+ alterations[j][i] = NO_ALTERATION;
+ }
+ }
+}
+
+/**********************************
+ *
+ * The corresponding function for monophony.
+ *
+ *********************************/
+
+void gregorio_reinitialize_one_voice_alterations(char alterations[13])
+{
+ int i;
+ for (i = 0; i < 13; i++) {
+ alterations[i] = NO_ALTERATION;
+ }
+}
+
+/**********************************
+ *
+ * A function called after the entire score is determined : we check
+ * if the first element is a key change, if it is the case we delete
+ * it and we update the score->voice-info->initial_key. Works in
+ * polyphony.
+ *
+ *********************************/
+
+void gregorio_fix_initial_keys(gregorio_score *score, int default_key)
+{
+ int clef = 0;
+ gregorio_element *element;
+ gregorio_voice_info *voice_info;
+ int i;
+ char to_delete = 1;
+
+ if (!score || !score->first_syllable || !score->first_voice_info) {
+ gregorio_message(_("score is not available"),
+ "gregorio_fix_initial_keys", VERBOSITY_WARNING, 0);
+ return;
+ }
+ voice_info = score->first_voice_info;
+ for (i = 0; i < score->number_of_voices; i++) {
+ element = score->first_syllable->elements[i];
+ if (!element) {
+ continue;
+ }
+ if (element->type == GRE_C_KEY_CHANGE) {
+ clef =
+ gregorio_calculate_new_key(C_KEY,
+ element->u.misc.pitched.pitch - '0');
+ voice_info->initial_key = clef;
+ voice_info->flatted_key = element->u.misc.pitched.flatted_key;
+ gregorio_free_one_element(&(score->first_syllable->elements[i]));
+ gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0,
+ _("in voice %d the first element is a key definition, "
+ "considered as initial key"), i + 1);
+ } else if (element->type == GRE_F_KEY_CHANGE) {
+ clef =
+ gregorio_calculate_new_key(F_KEY,
+ element->u.misc.pitched.pitch - '0');
+ voice_info->initial_key = clef;
+ voice_info->flatted_key = element->u.misc.pitched.flatted_key;
+ gregorio_free_one_element(&(score->first_syllable->elements[i]));
+ gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0,
+ _("in voice %d the first element is a key definition, "
+ "considered as initial key"), i + 1);
+ }
+ voice_info = voice_info->next_voice_info;
+ }
+
+ /* then we suppress syllables that contain nothing anymore : case of (c2)
+ * at beginning of files */
+
+ for (i = 0; i < score->number_of_voices; i++) {
+ if (score->first_syllable->elements[i]) {
+ to_delete = 0;
+ break;
+ }
+ }
+
+ if (to_delete) {
+ gregorio_free_one_syllable(&(score->first_syllable),
+ score->number_of_voices);
+ }
+ /* finally we initialize voice infos that have no initial key to default
+ * key */
+
+ voice_info = score->first_voice_info;
+
+ for (i = 0; i < score->number_of_voices; i++) {
+ if (voice_info->initial_key == NO_KEY) {
+ voice_info->initial_key = default_key;
+ gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0,
+ _("no initial key definition in voice %d, default key "
+ "definition applied"), i + 1);
+ }
+ voice_info = voice_info->next_voice_info;
+ }
+}
+
+/**********************************
+ *
+ * A small function to determine if an element list contains only
+ * special elements (bar, key-change, etc.), useful because the
+ * representation (in xml for example) may vary according to it.
+ *
+ *********************************/
+
+bool gregorio_is_only_special(gregorio_element *element)
+{
+ if (!element) {
+ return 0;
+ }
+ while (element) {
+ if (element->type == GRE_ELEMENT) {
+ return 0;
+ }
+ element = element->next;
+ }
+ return 1;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.h
new file mode 100644
index 00000000000..539c33e4ed8
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/struct.h
@@ -0,0 +1,867 @@
+/*
+ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @file
+ * The file starts by the definition of all the structures used in
+ * gregorio. As it is certainly the most important file for
+ * understanding, read it carefully.
+ */
+
+#include "unicode.h"
+
+#ifndef STRUCT_H
+#define STRUCT_H
+
+#include "bool.h"
+#include "sha1.h"
+
+#ifdef __cplusplus
+#define ENUM_BITFIELD(TYPE) enum TYPE
+#elif defined(__GNUC__) && __GNUC__ >= 2
+#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
+#else
+#define ENUM_BITFIELD(TYPE) unsigned int
+#endif
+
+/* Lilypond-compatible location counters */
+typedef struct gregorio_scanner_location {
+ /* - line is the 1-based line number
+ * - column is the 0-based* column number, tabs expanded to 8-column stops
+ * - offset is the 0-based number of characters from the start of the line
+ *
+ * * = column is calculated and stored as a 0-based number so the tabstop
+ * math is simpler; it should be printed 1-based */
+
+ unsigned short first_line;
+ unsigned short first_column;
+ unsigned short first_offset;
+ unsigned short last_line;
+ unsigned short last_column;
+ unsigned short last_offset;
+} gregorio_scanner_location;
+
+/* all the different types of things a gregorio_* can be */
+
+typedef enum gregorio_type {
+ GRE_NOTE = 1,
+ GRE_GLYPH,
+ GRE_ELEMENT,
+ GRE_FLAT,
+ GRE_SHARP,
+ GRE_NATURAL,
+ GRE_C_KEY_CHANGE,
+ GRE_C_KEY_CHANGE_FLATED,
+ GRE_SYLLABLE,
+ GRE_F_KEY_CHANGE,
+ GRE_F_KEY_CHANGE_FLATED,
+ GRE_END_OF_LINE,
+ GRE_SPACE,
+ GRE_BAR,
+ GRE_END_OF_PAR,
+ GRE_CUSTOS,
+ /* I don't really know how I could use the a TEXVERB_NOTE in gregoriotex,
+ * as we don't write note by note... */
+ /* GRE_TEXVERB_NOTE, */
+ GRE_TEXVERB_GLYPH,
+ GRE_TEXVERB_ELEMENT,
+ /* above lines text, quite the same as GRE_TEXVERB_ELEMENT, but counted
+ * differently for the spaces above the lines */
+ GRE_ALT,
+ GRE_NLBA,
+ GRE_MANUAL_CUSTOS
+} gregorio_type;
+
+/* the different shapes, only for notes */
+
+typedef enum gregorio_shape {
+ S_UNDETERMINED = 0,
+ S_PUNCTUM,
+ S_PUNCTUM_END_OF_GLYPH,
+ S_PUNCTUM_INCLINATUM,
+ S_PUNCTUM_INCLINATUM_DEMINUTUS,
+ S_PUNCTUM_INCLINATUM_AUCTUS,
+ S_VIRGA,
+ S_VIRGA_REVERSA,
+ S_BIVIRGA,
+ S_TRIVIRGA,
+ S_ORISCUS,
+ S_ORISCUS_AUCTUS,
+ S_ORISCUS_DEMINUTUS,
+ S_ORISCUS_SCAPUS,
+ S_QUILISMA,
+ S_STROPHA,
+ S_STROPHA_AUCTA,
+ S_DISTROPHA,
+ S_DISTROPHA_AUCTA,
+ S_TRISTROPHA,
+ S_TRISTROPHA_AUCTA,
+ S_PUNCTUM_CAVUM,
+ S_LINEA_PUNCTUM,
+ S_LINEA_PUNCTUM_CAVUM,
+ S_PUNCTUM_CAVUM_INCLINATUM,
+ S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS,
+ /* special shapes that must not appear in the final form of the score :
+ * quadratum is the shape of the first note of a punctum quadratum
+ * and quilisma quadratum is the shape of the first note of a pes
+ * quislisma quadratum */
+ S_QUADRATUM,
+ /* those shapes are for now used only in gregoriotex */
+ S_QUILISMA_QUADRATUM,
+ S_PUNCTUM_AUCTUS_ASCENDENS,
+ S_PUNCTUM_AUCTUS_DESCENDENS,
+ S_PUNCTUM_DEMINUTUS,
+ S_LINEA
+} gregorio_shape;
+
+/* the different kind of bars */
+
+typedef enum gregorio_bar {
+ B_NO_BAR = 0,
+ B_VIRGULA,
+ B_DIVISIO_MINIMA,
+ B_DIVISIO_MINOR,
+ B_DIVISIO_MAIOR,
+ B_DIVISIO_FINALIS,
+ B_DIVISIO_MINOR_D1,
+ B_DIVISIO_MINOR_D2,
+ B_DIVISIO_MINOR_D3,
+ B_DIVISIO_MINOR_D4,
+ B_DIVISIO_MINOR_D5,
+ B_DIVISIO_MINOR_D6
+} gregorio_bar;
+
+/* definition of the signs. You can notice that the values are made so
+ * that if you wan to add a vertical episemus to a note, you juste
+ * make note->signs+=_V_EPISEMUS, so please don't change the value as
+ * this trick is used. */
+
+typedef enum gregorio_sign {
+ _NO_SIGN = 0x00,
+ _PUNCTUM_MORA = 0x01,
+ _AUCTUM_DUPLEX = 0x02,
+ _V_EPISEMUS = 0x10,
+ _V_EPISEMUS_PUNCTUM_MORA = 0x11,
+ _V_EPISEMUS_AUCTUM_DUPLEX = 0x12,
+ /* more rare signs, for now they can't be used with the others */
+ _ACCENTUS = 0x03,
+ _ACCENTUS_REVERSUS = 0x04,
+ _CIRCULUS = 0x05,
+ _SEMI_CIRCULUS = 0x06,
+ _SEMI_CIRCULUS_REVERSUS = 0x07,
+ /* signs of a bar */
+ _BAR_H_EPISEMUS = 0x08,
+ _V_EPISEMUS_BAR_H_EPISEMUS = 0x18
+} gregorio_sign;
+
+/* the different spaces */
+
+typedef enum gregorio_space {
+ SP_DEFAULT = 1,
+ SP_NO_SPACE,
+ SP_ZERO_WIDTH,
+ SP_NEUMATIC_CUT,
+ SP_LARGER_SPACE,
+ SP_GLYPH_SPACE,
+ SP_NEUMATIC_CUT_NB,
+ SP_LARGER_SPACE_NB,
+ SP_GLYPH_SPACE_NB
+} gregorio_space;
+
+/* the different liquescences, like for the signs, have special
+ * values: to say that something is initio_debilis, just do
+ * glyph->liquescentia+=L_INITIO_DEBILIS. So don't change the value,
+ * the trick is much used */
+
+typedef enum gregorio_liquescentia {
+ L_NO_LIQUESCENTIA = 0,
+ L_DEMINUTUS = 0x01,
+ L_AUCTUS_ASCENDENS = 0x02,
+ L_AUCTUS_DESCENDENS = 0x04,
+ L_AUCTA = 0x08,
+ L_INITIO_DEBILIS = 0x10,
+ L_DEMINUTUS_INITIO_DEBILIS = 0x11,
+ L_AUCTUS_ASCENDENS_INITIO_DEBILIS = 0x12,
+ L_AUCTUS_DESCENDENS_INITIO_DEBILIS = 0x14,
+ L_AUCTA_INITIO_DEBILIS = 0x18
+} gregorio_liquescentia;
+
+typedef enum grehepisemus_size {
+ H_NORMAL = 0,
+ H_SMALL_LEFT,
+ H_SMALL_CENTRE,
+ H_SMALL_RIGHT
+} grehepisemus_size;
+
+/* values are chosen so BELOW/ABOVE can be added to a pitch */
+typedef enum gregorio_vposition {
+ VPOS_AUTO = 0,
+ VPOS_BELOW = -1,
+ VPOS_ABOVE = 1
+} gregorio_vposition;
+
+/* The different types of glyph */
+
+typedef enum gregorio_glyph_type {
+ G_PUNCTUM_INCLINATUM = 1,
+ G_2_PUNCTA_INCLINATA_DESCENDENS,
+ G_3_PUNCTA_INCLINATA_DESCENDENS,
+ G_4_PUNCTA_INCLINATA_DESCENDENS,
+ G_5_PUNCTA_INCLINATA_DESCENDENS,
+ G_2_PUNCTA_INCLINATA_ASCENDENS,
+ G_3_PUNCTA_INCLINATA_ASCENDENS,
+ G_4_PUNCTA_INCLINATA_ASCENDENS,
+ G_5_PUNCTA_INCLINATA_ASCENDENS,
+ G_TRIGONUS,
+ G_PUNCTA_INCLINATA,
+ /* !!! DO NOT CHANGE THE ENUM ORDERING BEFORE THIS LINE !!! */
+ G_UNDETERMINED,
+ G_VIRGA,
+ G_STROPHA,
+ G_STROPHA_AUCTA,
+ G_PUNCTUM,
+ G_PODATUS,
+ G_PES_QUADRATUM,
+ G_FLEXA,
+ G_TORCULUS,
+ G_TORCULUS_RESUPINUS,
+ G_TORCULUS_RESUPINUS_FLEXUS,
+ G_PORRECTUS,
+ G_PORRECTUS_FLEXUS,
+ G_BIVIRGA,
+ G_TRIVIRGA,
+ G_DISTROPHA,
+ G_DISTROPHA_AUCTA,
+ G_TRISTROPHA,
+ G_TRISTROPHA_AUCTA,
+ G_PES_QUADRATUM_FIRST_PART,
+ G_SCANDICUS,
+ G_PES_QUILISMA_QUADRATUM_FIRST_PART,
+ G_ANCUS,
+ G_ONE_NOTE,
+ G_PUNCTA_ASCENDENS,
+ G_PUNCTA_DESCENDENS,
+ G_VIRGA_REVERSA,
+ G_SALICUS,
+ G_VIRGA_STRATA,
+ G_TORCULUS_LIQUESCENS,
+ /* additional glyph types, necessary for determination */
+ G_PORRECTUS_NO_BAR,
+ G_PORRECTUS_FLEXUS_NO_BAR,
+ G_PES_QUILISMA
+} gregorio_glyph_type;
+
+/*
+ *
+ * The we define the characters. First we define the different styles. You
+ * can notice that center is just a style like the others
+ *
+ */
+
+typedef enum grestyle_style {
+ ST_NO_STYLE = 0,
+ ST_ITALIC,
+ ST_CENTER,
+ /* when the user types a {}, basically the same behaviour, except for
+ * the initial */
+ ST_FORCED_CENTER,
+ ST_BOLD,
+ ST_TT,
+ ST_SMALL_CAPS,
+ ST_SPECIAL_CHAR,
+ ST_VERBATIM,
+ ST_INITIAL, /* a style used to determine the initial */
+ ST_UNDERLINED,
+ ST_COLORED,
+ ST_FIRST_SYLLABLE,
+ ST_FIRST_SYLLABLE_INITIAL
+} grestyle_style;
+
+/*
+ * Then the different types of styles. See the next comments for further
+ * readings.
+ */
+
+typedef enum grestyle_type {
+ ST_T_NOTHING = 0,
+ ST_T_BEGIN,
+ ST_T_END
+} grestyle_type;
+
+/*
+ * The different types of translation centerings
+ */
+
+typedef enum gregorio_tr_centering {
+ TR_NORMAL = 0,
+ TR_WITH_CENTER_BEGINNING,
+ TR_WITH_CENTER_END
+} gregorio_tr_centering;
+
+/*
+ * Nothing, beginning or end of area without linebreak
+ */
+
+typedef enum gregorio_nlba {
+ NLBA_NORMAL = 0,
+ NLBA_BEGINNING,
+ NLBA_END
+} gregorio_nlba;
+
+typedef enum gregorio_euouae {
+ EUOUAE_NORMAL = 0,
+ EUOUAE_BEGINNING,
+ EUOUAE_END
+} gregorio_euouae;
+
+typedef enum gregorio_word_position {
+ WORD_BEGINNING = 1,
+ WORD_MIDDLE,
+ WORD_END,
+ WORD_ONE_SYLLABLE
+} gregorio_word_position;
+
+/* the centering schemes for gabc: */
+typedef enum gregorio_lyric_centering {
+ SCHEME_DEFAULT = 0,
+ SCHEME_VOWEL,
+ SCHEME_SYLLABLE
+} gregorio_lyric_centering;
+
+typedef struct gregorio_extra_info {
+ /* the sub-type of GRE_END_OF_LINE */
+ ENUM_BITFIELD(gregorio_type) sub_type:8;
+ ENUM_BITFIELD(gregorio_bar) bar:8;
+ ENUM_BITFIELD(gregorio_space) space:8;
+ ENUM_BITFIELD(gregorio_nlba) nlba:8;
+} gregorio_extra_info;
+
+typedef union gregorio_misc_element_info {
+ /* pitched is used for GRE_CUSTOS, GRE_FLAT, GRE_SHARP, GRE_NATURAL,
+ * GRE_C_KEY_CHANGE, GRE_F_KEY_CHANGE, GRE_C_KEY_CHANGE_FLATED, and
+ * GRE_F_KEY_CHANGE_FLATED */
+ struct {
+ /* The pitch of the glyph for GRE_FLAT, GRE_NATURAL, GRE_SHARP.
+ * If a clef change, pitch will be a number indicating the line of
+ * the clef. */
+ signed char pitch;
+ /* boolean indicating a clef with a B-flat */
+ bool flatted_key:1;
+ bool force_pitch:1;
+ } pitched;
+ /* unpitched is used for everything else */
+ struct {
+ struct gregorio_extra_info info;
+ /* an element might carry a sign. */
+ ENUM_BITFIELD(gregorio_sign) special_sign:8;
+ } unpitched;
+} gregorio_misc_element_info;
+
+/*
+ * ! We start with the most precise structure, the note structure. The
+ * note is always a real note (we'll see that glyphs and elements can be
+ * other things).
+ */
+typedef struct gregorio_note {
+ /* then two pointer to other notes, to make a chained list. */
+ struct gregorio_note *previous;
+ struct gregorio_note *next;
+ /* choral sign is a letter that appears next to a note in some choral
+ * scores we put it as char* because sometimes two letters appear */
+ char *choral_sign;
+ /* a string containing a possible TeX verbatim; necessary during
+ * structure generation. */
+ char *texverb;
+ union {
+ /* note is used for GRE_NOTE, GRE_FLAT, GRE_SHARP, GRE_NATURAL,
+ * GRE_C_KEY_CHANGE, GRE_F_KEY_CHANGE, GRE_C_KEY_CHANGE_FLATED, and
+ * GRE_F_KEY_CHANGE_FLATED */
+ struct {
+ /* the pitch is the height of the note on the score, that is to
+ * say the letter it is represented by in gabc. If a clef
+ * change, pitch will be a number indicating the line of the
+ * clef. */
+ signed char pitch;
+ /* shape is the shape of the note... if you want to know the
+ * different possible shapes, see above. */
+ ENUM_BITFIELD(gregorio_shape) shape:8;
+ /* liquescentia is the liquescence on the note, it is not really
+ * used in the final score, but it is, like type, used in the
+ * determination of glyphs. */
+ ENUM_BITFIELD(gregorio_liquescentia) liquescentia:8;
+ } note;
+ /* other is used for everything else */
+ struct gregorio_extra_info other;
+ } u;
+
+ /* these go to the end for structure alignment */
+ unsigned short src_line, src_column, src_offset;
+
+ /* we have seen that notes are always real notes, that is to say
+ * GRE_NOTE. the type is always that in the final structure. But there
+ * is however this field in the structure because of the temporary
+ * states that can appear in the determination, where notes can be
+ * other things. This is the case for example in gabc reading. */
+ ENUM_BITFIELD(gregorio_type) type:8;
+ /* signs is the signs on the notes, see above for all possible values */
+ ENUM_BITFIELD(gregorio_sign) signs:8;
+ /* special_sign is the sign we sometimes encounter on punctum cavum, like
+ * accentus, semi-circulus, etc. */
+ ENUM_BITFIELD(gregorio_sign) special_sign:8;
+ /* h_episemus_type is the type of horizontal episemus, possible values
+ * are H_ALONE for an isolated horizontal episemus, H_MULTI_BEGINNING
+ * if the note is the first note of an episemus on several notes,
+ * H_MULTI_MIDDLE if it is inside an episemus on several notes. I let
+ * you guess what could be the use of H_MULTI_END. Other values are
+ * temporary values used in determination, they must not appear in the
+ * final structure. */
+
+ const char *gtex_offset_case;
+ signed char v_episemus_height;
+ signed char h_episemus_above;
+ signed char h_episemus_below;
+ ENUM_BITFIELD(grehepisemus_size) h_episemus_above_size:2;
+ ENUM_BITFIELD(grehepisemus_size) h_episemus_below_size:2;
+ bool h_episemus_above_connect:1;
+ bool h_episemus_below_connect:1;
+ bool is_lower_note:1;
+ bool is_upper_note:1;
+ ENUM_BITFIELD(gregorio_vposition) mora_vposition:2;
+ bool choral_sign_is_nabc:1;
+} gregorio_note;
+
+/*
+ * ! @brief The gregorio glyph structure Unlike gregorio_note,
+ * gregorio_glyph can be other things besides \c GRE_GLYPH: it can also be
+ * \c GRE_FLAT, \c GRE_NATURAL or \c GRE_SPACE
+ */
+typedef struct gregorio_glyph {
+ /* two pointer to make a chained list */
+ struct gregorio_glyph *previous;
+ struct gregorio_glyph *next;
+ /* a string containing a possible TeX verbatim; necessary during structure
+ * generation. */
+ char *texverb;
+ union {
+ /* glyph is used for GRE_GLYPH */
+ struct {
+ /* a pointer to a (chained list of) gregorio_notes, the first of
+ * the glyph. */
+ struct gregorio_note *first_note;
+ /* The glyph type for a GRE_GLYPH (porrectus, pes, etc.). They
+ * are all listed above. */
+ ENUM_BITFIELD(gregorio_glyph_type) glyph_type:8;
+ /* liquescentia is really used, because that will determine the
+ * shape we will have to use. */
+ ENUM_BITFIELD(gregorio_liquescentia) liquescentia:8;
+ } notes;
+ union gregorio_misc_element_info misc;
+ } u;
+
+ /* characters go to the end for structure alignment */
+
+ /* type can have the values explained in the comment just above. */
+ ENUM_BITFIELD(gregorio_type) type:8;
+
+ /* There is no additional parameter for GRE_SPACE in a gregorio_glyph
+ * because gregorio_space in this case can have only one value:
+ * SP_ZERO_WIDTH, as other spaces would break the glyphs into
+ * different elements. */
+} gregorio_glyph;
+
+typedef struct gregorio_element {
+ /* pointers to the next and previous elements. */
+ struct gregorio_element *previous;
+ struct gregorio_element *next;
+ /* a string containing a possible TeX verbatim; necessary during structure
+ * generation. */
+ char *texverb;
+ /* The nabc string */
+ char **nabc;
+ /* we put it here to get the length of the array here too */
+ size_t nabc_lines;
+ union {
+ /* first_glyph is used for GRE_ELEMENT */
+ /* a pointer to the first glyph of the element. */
+ struct gregorio_glyph *first_glyph;
+ union gregorio_misc_element_info misc;
+ } u;
+
+ /* type can have the values GRE_ELEMENT, GRE_BAR, GRE_C_KEY_CHANGE,
+ * GRE_F_KEY_CHANGE, GRE_END_OF_LINE, GRE_SPACE, GRE_TEXVERB_ELEMENT
+ * or GRE_NLBA */
+ ENUM_BITFIELD(gregorio_type) type:8;
+} gregorio_element;
+
+/*
+ *
+ * gregorio_characters are a bit specials. As there can be styles in the
+ * text, I had to find a structure mode adapted that just grewchar *. So
+ * basically a gregorio_character is a double-chained list of things that
+ * can be grewchar or gregorio_styles. For example if you type (in gabc)
+ * p<i>o</i>t, the corresponding gregorio_character list will be
+ * P->style(type: beginning, style italic) -> o -> style(type:end, style:
+ * italic). But for this list to be coherent, it is mandatory that it is
+ * xml-compliant, that is to say that a<b>c<i>d</b>e</i> will be
+ * interpreted as a<b>c<i>d</i></b><i>e</i>. This MUST be done when reading
+ * a file, so that the structure in memory is coherent. It makes input
+ * modules more comple, but output modules muche more simpler. The last
+ * particularity is that center must also be determined in the input
+ * modules, so that it is already defined in memory. But it is a bit more
+ * complex, because for TeX-like output modules, we need to close all
+ * styles before the center style: if the user types <i>pot</i> it must be
+ * represented as <i>p</i>{<i>o</i>}<i>t</i>.
+ *
+ * Here is the declaration of the gregorio_style struct. It is simply two
+ * chars, one telling the type of style character it is (beginning for a
+ * character that marks the beginning of a style, and end for a character
+ * marking the end of a style). The other char simply is the style
+ * represented by the character (italic, etc.)
+ *
+ */
+
+typedef struct gregorio_style {
+ ENUM_BITFIELD(grestyle_style) style:8;
+ ENUM_BITFIELD(grestyle_type) type:8;
+} gregorio_style;
+
+/*
+ *
+ * This union is quite ugly... but necessary for a gregorio_character to be
+ * able to be a grewchar or gregorio_style.
+ *
+ */
+typedef union character_or_style {
+ grewchar character;
+ struct gregorio_style s;
+} character_or_style;
+
+/*
+ *
+ * Finally the gregorio_character structure in itself, It is first a char
+ * determining the type (character or gregorio_style). This char is 0 when
+ * it is a style and something else when it is a character. Then the two
+ * pointers to build the double chained list, and finally the union. So
+ * when you want to access to the style of a gregorio_character (when you
+ * know it is a character of style), you must access to
+ * mygregoriochar.cos.s.style, and for the character
+ * mygregoriochar.cos.character .
+ *
+ */
+
+typedef struct gregorio_character {
+ bool is_character;
+ struct gregorio_character *next_character;
+ struct gregorio_character *previous_character;
+ union character_or_style cos;
+} gregorio_character;
+
+typedef struct gregorio_syllable {
+ /* pointer to a gregorio_text structure corresponding to the text. */
+ struct gregorio_character *text;
+ /* pointer to a gregorio_text structure corresponding to the
+ * translation */
+ struct gregorio_character *translation;
+ /* a string representing the text above the lines (raw TeX) */
+ char *abovelinestext;
+ /* pointer to the next and previous syllable */
+ struct gregorio_syllable *next_syllable;
+ struct gregorio_syllable *previous_syllable;
+ /* and finally a pointer to the elements of the structure. Here we see
+ * that we point to an array of elements. In fact it is the array of
+ * the first elements of the different voices of the syllable, for the
+ * case of polyphonic score. In most scores (monophonic), the array
+ * has only one element. */
+ struct gregorio_element **elements;
+ unsigned short src_line, src_column, src_offset;
+ /* a syllable can be a GRE_SYLLABLE, a GRE_*_KEY_CHANGE or a
+ * GRE_BAR. It is useful when there is only that in a syllable. */
+ char type;
+ /* again, an additional field to put some signs or other things... */
+ ENUM_BITFIELD(gregorio_sign) special_sign:8;
+ /* type of translation (with center beginning or only center end) */
+ ENUM_BITFIELD(gregorio_tr_centering) translation_type:2;
+ /* beginning or end of area without linebreak? */
+ ENUM_BITFIELD(gregorio_nlba) no_linebreak_area:2;
+ /* beginning or end of euouae area */
+ ENUM_BITFIELD(gregorio_euouae) euouae:2;
+ /* position is WORD_BEGINNING for the beginning of a multi-syllable
+ * word, WORD_ONE_SYLLABLE for syllable that are alone in their word,
+ * and i let you gess what are WORD_MIDDLE and WORD_END. */
+ ENUM_BITFIELD(gregorio_word_position) position:3;
+} gregorio_syllable;
+
+/* The items in source_info used to be -- well, most of them -- in
+ * gregorio_voice_info. This is because the different `voices' may
+ * in future be used for different variants of a melody:
+ * e.g. notated in square notation, notated in some early neumatic
+ * form from manuscript A, and another in manuscript B. In that
+ * case the different voices would naturally have different source
+ * info. However, this enhancement to gregorio is not yet planned,
+ * and so this structure is made part of gregorio_score. */
+typedef struct source_info {
+ char *author;
+ char *date;
+ char *manuscript;
+ char *manuscript_reference; /* was reference */
+ char *manuscript_storage_place; /* was storage_place */
+ char *book;
+ char *transcriber;
+ char *transcription_date;
+} source_info;
+
+/*
+ *
+ * Score is the top structure, the structure in which we will convert
+ * everything, and from which we will construct XML
+ *
+ */
+
+#define MAX_ANNOTATIONS 2
+
+typedef struct gregorio_score {
+ unsigned char digest[SHA1_DIGEST_SIZE];
+ /* the structure starts by a pointer to the first syllable of the
+ * score. */
+ struct gregorio_syllable *first_syllable;
+ /* the number of voices is very important. In monophony it is one. If
+ * there are more voices thant number_of_voices, the additional voices
+ * won't be taken into consideration. */
+ int number_of_voices;
+ /* then start some metadata: */
+ char *name;
+ char *gabc_copyright;
+ char *score_copyright;
+ char *office_part;
+ char *occasion;
+ /* the meter, numbers of syllables per line, as e.g. 8.8.8.8 */
+ char *meter;
+ char *commentary;
+ char *arranger;
+ struct source_info si;
+ /* the mode of a song is between 1 and 8 */
+ char mode;
+ /* There is one annotation for each line above the initial letter */
+ char *annotation[MAX_ANNOTATIONS];
+ /* field giving informations on the initial (no initial, normal initial
+ * or two lines initial) */
+ char initial_style;
+ /* the font to use in gregoriotex */
+ char *gregoriotex_font;
+ size_t nabc_lines;
+ char *user_notes;
+ /* the determination method (maximal ambitus, etc.) */
+ unsigned char det_method;
+ /* then, as there are some metadata that are voice-specific, we add a
+ * pointer to the first voice_info. (see comments below) */
+ struct gregorio_voice_info *first_voice_info;
+ gregorio_lyric_centering centering;
+} gregorio_score;
+
+/*
+ *
+ * gregorio_voice info contains everything that is voice_specific, for
+ * example the key, etc. that can be different from one voice to another.
+ * The order of the voice_info (it is a chained list) is the same as the
+ * order of the voices (from top to bottom in their representation on the
+ * score).
+ *
+ */
+
+typedef struct gregorio_voice_info {
+ /* the only thing that is worth a comment here is the key. We have a
+ * special representation for the key. See comments on
+ * src/struct-utils.c for further reading. */
+ int initial_key;
+ /* See source_info above for comments about the move of author etc. */
+ char *style;
+ char *virgula_position;
+ struct gregorio_voice_info *next_voice_info;
+ bool flatted_key;
+} gregorio_voice_info;
+
+/* the maximum number of voices, more than this is total nonsense in
+ * gregorian chant. */
+#define MAX_NUMBER_OF_VOICES 10
+
+#define MAX_TEXT_LENGTH 200
+
+#define C_KEY 'c'
+#define F_KEY 'f'
+#define NO_KEY -5
+#define DEFAULT_KEY 5
+
+#define MONOPHONY 0
+
+/* the different initial styles */
+
+#define NO_INITIAL 0
+#define NORMAL_INITIAL 1
+#define BIG_INITIAL 2
+
+#define NO_ALTERATION USELESS_VALUE
+#define FLAT GRE_FLAT
+#define NATURAL GRE_NATURAL
+
+#define USELESS_VALUE 0
+
+static __inline bool is_puncta_inclinata(char glyph)
+{
+ return glyph <= G_5_PUNCTA_INCLINATA_ASCENDENS;
+}
+
+#define IS_INITIO_DEBILIS 5
+#define NO_INITIO_DEBILIS 0
+
+static __inline bool is_liquescentia(char liquescentia)
+{
+ return liquescentia == L_DEMINUTUS || liquescentia == L_AUCTUS_ASCENDENS
+ || liquescentia == L_AUCTUS_DESCENDENS || liquescentia == L_AUCTA;
+}
+
+static __inline bool is_initio_debilis(char liquescentia)
+{
+ return liquescentia >= L_INITIO_DEBILIS;
+}
+
+#define HEPISEMUS_NONE 0
+#define HEPISEMUS_AUTO -1
+#define HEPISEMUS_FORCED -2
+
+/* The first pitch MUST be an odd number */
+#define LOWEST_PITCH 3
+#define HIGHEST_PITCH (LOWEST_PITCH + 12)
+#define DUMMY_PITCH (LOWEST_PITCH + 6)
+
+gregorio_score *gregorio_new_score(void);
+void gregorio_add_note(gregorio_note **current_note, signed char pitch,
+ gregorio_shape shape, gregorio_sign signs,
+ gregorio_liquescentia liquescentia, gregorio_note* prototype,
+ const gregorio_scanner_location *loc);
+void gregorio_add_glyph(gregorio_glyph **current_glyph,
+ gregorio_glyph_type type, gregorio_note *first_note,
+ gregorio_liquescentia liquescentia);
+void gregorio_add_element(gregorio_element **current_element,
+ gregorio_glyph *first_glyph);
+void gregorio_add_syllable(gregorio_syllable **current_syllable,
+ int number_of_voices, gregorio_element *elements[],
+ gregorio_character *first_character,
+ gregorio_character *first_translation_character,
+ gregorio_word_position position, char *abovelinestext,
+ gregorio_tr_centering translation_type,
+ gregorio_nlba no_linebreak_area,
+ gregorio_euouae euouae, const gregorio_scanner_location *loc);
+void gregorio_add_special_sign(gregorio_note *current_note, gregorio_sign sign);
+void gregorio_change_shape(gregorio_note *note, gregorio_shape shape);
+void gregorio_position_h_episemus_above(gregorio_note *note, signed char height,
+ bool connect);
+void gregorio_position_h_episemus_below(gregorio_note *note, signed char height,
+ bool connect);
+void gregorio_add_h_episemus(gregorio_note *note, grehepisemus_size size,
+ gregorio_vposition vposition, bool disable_bridge,
+ unsigned int *nbof_isolated_episemus);
+void gregorio_add_sign(gregorio_note *note, gregorio_sign sign,
+ gregorio_vposition vposition);
+void gregorio_add_liquescentia(gregorio_note *note,
+ gregorio_liquescentia liquescentia);
+void gregorio_add_voice_info(gregorio_voice_info **current_voice_info);
+void gregorio_free_voice_infos(gregorio_voice_info *voice_info);
+void gregorio_free_one_note(gregorio_note **note);
+void gregorio_free_one_glyph(gregorio_glyph **glyph);
+void gregorio_free_score(gregorio_score *score);
+void gregorio_go_to_first_character(gregorio_character **character);
+void gregorio_add_pitched_element_as_glyph(gregorio_glyph **current_glyph,
+ gregorio_type type, signed char pitch, bool flatted_key,
+ bool force_pitch, char *texverb);
+void gregorio_add_unpitched_element_as_glyph(gregorio_glyph **current_glyph,
+ gregorio_type type, gregorio_extra_info info, gregorio_sign sign,
+ char *texverb);
+void gregorio_add_end_of_line_as_note(gregorio_note **current_note,
+ gregorio_type sub_type, const gregorio_scanner_location *loc);
+void gregorio_add_custo_as_note(gregorio_note **current_note,
+ const gregorio_scanner_location *loc);
+void gregorio_add_manual_custos_as_note(gregorio_note **current_note,
+ signed char pitch, const gregorio_scanner_location *loc);
+void gregorio_add_clef_change_as_note(gregorio_note **current_note,
+ gregorio_type type, signed char clef_line,
+ const gregorio_scanner_location *loc);
+void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar,
+ const gregorio_scanner_location *loc);
+void gregorio_add_alteration_as_note(gregorio_note **current_note,
+ gregorio_type type, signed char pitch,
+ const gregorio_scanner_location *loc);
+void gregorio_add_space_as_note(gregorio_note **current_note,
+ gregorio_space space,
+ const gregorio_scanner_location *loc);
+void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str,
+ gregorio_type type, const gregorio_scanner_location *loc);
+void gregorio_add_nlba_as_note(gregorio_note **current_note,
+ gregorio_nlba type, const gregorio_scanner_location *loc);
+void gregorio_add_texverb_to_note(gregorio_note **current_note, char *str);
+void gregorio_add_cs_to_note(gregorio_note *const*current_note, char *str,
+ bool nabc);
+void gregorio_add_misc_element(gregorio_element **current_element,
+ gregorio_type type, gregorio_misc_element_info info, char *texverb);
+void gregorio_reinitialize_alterations(char alterations[][13],
+ int number_of_voices);
+void gregorio_reinitialize_one_voice_alterations(char alterations[13]);
+void gregorio_set_score_name(gregorio_score *score, char *name);
+void gregorio_set_score_gabc_copyright(gregorio_score *score, char *gabc_copyright);
+void gregorio_set_score_score_copyright(gregorio_score *score,
+ char *score_copyright);
+void gregorio_set_score_office_part(gregorio_score *score, char *office_part);
+void gregorio_set_score_occasion(gregorio_score *score, char *occasion);
+void gregorio_set_score_meter(gregorio_score *score, char *meter);
+void gregorio_set_score_commentary(gregorio_score *score, char *commentary);
+void gregorio_set_score_arranger(gregorio_score *score, char *arranger);
+void gregorio_set_score_gabc_version(gregorio_score *score, char *gabc_version);
+void gregorio_set_score_number_of_voices(gregorio_score *score,
+ int number_of_voices);
+void gregorio_set_score_annotation(gregorio_score *score, char *annotation);
+void gregorio_set_score_author(gregorio_score *score, char *author);
+void gregorio_set_score_date(gregorio_score *score, char *date);
+void gregorio_set_score_manuscript(gregorio_score *score, char *manuscript);
+void gregorio_set_score_book(gregorio_score *score, char *book);
+void gregorio_set_score_manuscript_reference(gregorio_score *score,
+ char *reference);
+void gregorio_set_score_manuscript_storage_place(gregorio_score *score,
+ char *storage_place);
+void gregorio_set_score_transcriber(gregorio_score *score, char *transcriber);
+void gregorio_set_score_transcription_date(gregorio_score *score,
+ char *transcription_date);
+void gregorio_set_score_user_notes(gregorio_score *score, char *user_notes);
+void gregorio_set_voice_style(gregorio_voice_info *voice_info, char *style);
+void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info,
+ char *virgula_position);
+void gregorio_fix_initial_keys(gregorio_score *score, int default_key);
+void gregorio_go_to_first_note(gregorio_note **note);
+void gregorio_go_to_first_glyph(gregorio_glyph **glyph);
+void gregorio_det_step_and_line_from_key(int key, char *step, int *line);
+bool gregorio_is_only_special(gregorio_element *element);
+int gregorio_calculate_new_key(char step, int line);
+void gregorio_add_character(gregorio_character **current_character,
+ grewchar wcharacter);
+void gregorio_begin_style(gregorio_character **current_character,
+ grestyle_style style);
+void gregorio_end_style(gregorio_character **current_character,
+ grestyle_style style);
+signed char gregorio_determine_next_pitch(gregorio_syllable *syllable,
+ gregorio_element *element, gregorio_glyph *glyph);
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.c
new file mode 100644
index 00000000000..91851f38eac
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.c
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "support.h"
+
+/* Our version of snprintf; this is NOT semantically the same as C99's
+ * snprintf; rather, it's a "lowest common denominator" implementation
+ * blending C99 and MS-C */
+void gregorio_snprintf(char *s, size_t size, const char *format, ...)
+{
+ va_list args;
+
+#ifdef _MSC_VER
+ memset(s, 0, size * sizeof(char));
+#endif
+
+ va_start(args, format);
+#ifdef _MSC_VER
+ _vsnprintf_s(s, size, _TRUNCATE, format, args);
+#else
+ vsnprintf(s, size, format, args);
+#endif
+ va_end(args);
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.h
new file mode 100644
index 00000000000..323b5ac4bc3
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/support.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SUPPORT_H
+#define SUPPORT_H
+
+#include <stdlib.h>
+
+void gregorio_snprintf(char *s, size_t size, const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.c
new file mode 100644
index 00000000000..f36bac8d543
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.c
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2008-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <string.h> /* for strlen */
+#include <stdlib.h>
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+
+/*
+ *
+ * This file contains some functions to handle UTF-8 correctly. We chose to
+ * embed them instead of relying on locale or glib, for simplification: with
+ * these functions we don't rely on anything locale-dependant (such as
+ * wchar_t). The reason is that Windows XP (...) is not UTF-8 and thus would
+ * need the glib in oder to run, which make dependencies much bigger.
+ *
+ */
+
+/* an utf8 version of mbstowcs */
+
+static size_t gregorio_mbstowcs(grewchar *dest, const char *src, int n)
+{
+ unsigned char bytes_to_come;
+ grewchar result = 0;
+ unsigned char c;
+ size_t res = 0; /* number of bytes we've done so far */
+ if (!src) {
+ gregorio_message(_("call with a NULL argument"), "gregorio_mbstowcs",
+ VERBOSITY_ERROR, 0);
+ }
+ while (*src && ((int) res <= n || !dest)) {
+ c = (unsigned char) (*src);
+ if (c < 128) { /* 0100xxxx */
+ /* one-byte symbol */
+ bytes_to_come = 0;
+ result = c;
+ } else if (c >= 240) { /* 1111xxxx */
+ /* start of a four-byte symbol */
+ /* printf("%d\n", c); */
+ bytes_to_come = 3;
+ result = (result << 3) | (c & 7);
+ } else if (c >= 224) { /* 1110xxxx */
+ /* start of a three-byte symbol */
+ /* printf("%d\n", c); */
+ bytes_to_come = 2;
+ result = (result << 4) | (c & 15);
+ } else if (c >= 192) { /* 1100xxxx */
+ /* start of a two-byte symbol */
+ /* printf("%d\n", c); */
+ bytes_to_come = 1;
+ result = (result << 5) | (c & 31);
+ } else {
+ /* printf("%s %d %d\n", src, res, c); */
+ gregorio_message(_("malformed UTF-8 sequence1"),
+ "gregorio_mbstowcs", VERBOSITY_ERROR, 0);
+ return -1;
+ }
+ while (bytes_to_come > 0) {
+ bytes_to_come--;
+ src++;
+ c = (unsigned char) (*src);
+ if (c < 192 && c >= 128) /* 1000xxxx */
+ {
+ result = (result << 6) | (c & 63);
+ } else {
+ gregorio_message(_("malformed UTF-8 sequence2"),
+ "gregorio_mbstowcs", VERBOSITY_ERROR, 0);
+ return -1;
+ }
+ }
+ if (dest) {
+ dest[res] = result;
+ }
+ res++;
+ result = 0;
+ src++;
+ }
+ if (!(*src) && (int) res <= n && dest) {
+ dest[res] = 0;
+ }
+ return res;
+}
+
+/* the value returned by this function must be freed! */
+grewchar *gregorio_build_grewchar_string_from_buf(const char *const buf)
+{
+ size_t len;
+ grewchar *gwstring;
+ if (buf == NULL) {
+ return NULL;
+ }
+ len = strlen(buf); /* to get the length of the syllable in ASCII */
+ gwstring = (grewchar *) malloc((len + 1) * sizeof(grewchar));
+ gregorio_mbstowcs(gwstring, buf, len); /* converting into wchar_t */
+ return gwstring;
+}
+
+/* the function to build a gregorio_character list from a buffer. */
+
+gregorio_character *gregorio_build_char_list_from_buf(const char *const buf)
+{
+ int i = 0;
+ grewchar *gwstring;
+ gregorio_character *current_character = NULL;
+ if (buf == NULL) {
+ return NULL;
+ }
+ gwstring = gregorio_build_grewchar_string_from_buf(buf);
+ /* we add the corresponding characters in the list of gregorio_characters */
+ while (gwstring[i]) {
+ gregorio_add_character(&current_character, gwstring[i]);
+ i++;
+ }
+ free(gwstring);
+ gregorio_go_to_first_character(&current_character);
+ return current_character;
+}
+
+/* the function to compare a grewchar * and a buf. Returns 1 if different, 0
+ * if not. */
+
+unsigned char gregorio_wcsbufcmp(grewchar *wstr, const char *buf)
+{
+ int i = 0;
+ size_t len;
+ grewchar *gwbuf;
+ if (!buf || !wstr) {
+ return 1;
+ }
+ len = strlen(buf); /* to get the length of the syllable in ASCII */
+ gwbuf = (grewchar *) malloc((len + 1) * sizeof(grewchar));
+ gregorio_mbstowcs(gwbuf, buf, len); /* converting into wchar_t */
+ /* we add the corresponding characters in the list of gregorio_characters */
+ while (gwbuf[i] && wstr[i]) {
+ if (gwbuf[i] != wstr[i]) {
+ free(gwbuf);
+ return 1;
+ }
+ i = i + 1;
+ }
+ /* we finished the two strings */
+ if (gwbuf[i] == 0 && wstr[i] == 0) {
+ free(gwbuf);
+ return 0;
+ }
+ free(gwbuf);
+ return 1;
+}
+
+void gregorio_print_unichar(FILE *f, grewchar to_print)
+{
+ if (to_print <= 0x7F) {
+ fprintf(f, "%c", (unsigned char) to_print);
+ return;
+ }
+ if (to_print >= 0x80 && to_print <= 0x7FF) {
+ fprintf(f, "%c%c", 0xC0 | (to_print >> 6), 0x80 | (to_print & 0x3F));
+ return;
+ }
+ if ((to_print >= 0x800 && to_print <= 0xD7FF) ||
+ (to_print >= 0xE000 && to_print <= 0xFFFF)) {
+ fprintf(f, "%c%c%c", 0xE0 | (to_print >> 12),
+ 0x80 | ((to_print >> 6) & 0x3F), 0x80 | (to_print & 0x3F));
+ return;
+ }
+ if (to_print >= 0x10000 && to_print <= 0x10FFFF) {
+ fprintf(f, "%c%c%c%c", 0xF0 | (to_print >> 18),
+ 0x80 | ((to_print >> 12) & 0x3F),
+ 0x80 | ((to_print >> 6) & 0x3F), 0x80 | (to_print & 0x3F));
+ }
+}
+
+void gregorio_print_unistring(FILE *f, grewchar *first_char)
+{
+ while (*first_char != 0) {
+ gregorio_print_unichar(f, *first_char);
+ first_char++;
+ }
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.h
new file mode 100644
index 00000000000..b55f1fde730
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/unicode.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008-2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef UNICODE_H_FIRST_PART
+#define UNICODE_H_FIRST_PART
+#define UNICODE_H
+
+#include <stdio.h>
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#else
+#include <inttypes.h>
+#endif
+
+typedef uint32_t grewchar;
+
+void gregorio_print_unichar(FILE *f, grewchar to_print);
+void gregorio_print_unistring(FILE *f, grewchar *first_char);
+unsigned char gregorio_wcsbufcmp(grewchar *wstr, const char *buf);
+grewchar *gregorio_build_grewchar_string_from_buf(const char *buf);
+
+static __inline size_t gregorio_wcstrlen(const grewchar *wstr)
+{
+ size_t length = 0;
+
+ while (*(wstr++)) {
+ ++length;
+ }
+
+ return length;
+}
+
+/* this macro is for portability under windows, where L'x' is only two-bytes
+ * long, and thus needs to be cast to a 4-bytes integer. */
+#define GL(wc) ((const grewchar) L'wc')
+
+#endif
+
+/* we enter the second part only if struct.h has already been included, because
+ * we need gregorio_character */
+
+#ifdef STRUCT_H
+
+#ifndef UNICODE_H_SECOND_PART
+#define UNICODE_H_SECOND_PART
+
+gregorio_character *gregorio_build_char_list_from_buf(const char *buf);
+
+#endif
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h
new file mode 100644
index 00000000000..902ce1e8f55
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef UTF8STRINGS_H
+#define UTF8STRINGS_H
+
+#define ACCENTED_AE "'\303\246"
+#define ACCENTED_OE "'\305\223"
+
+/* This is a superset of Latin vowels which includes some French, Vietnamese,
+ * Slavic, Hungarian, and Norwegian vowels which don't interfere with Latin
+ * itself. For something more accurate, the user should consider the use of
+ * custom centering rules. */
+#define DEFAULT_VOWELS "a\303\240\303\241\303\242\304\203\304\205\303\245A\303\200\303\201\303\202\304\202\304\204\303\205e\303\250\303\251\303\252\303\253\304\233\304\231E\303\210\303\211\303\212\303\213\304\232\304\230i\303\254\303\255\303\256I\303\214\303\215\303\216" \
+ "o\303\262\303\263\303\264\306\241\305\221\303\270O\303\222\303\223\303\224\306\240\305\220\303\230u\303\271\303\272\303\273\306\260\305\257\305\261U\303\231\303\232\303\233\306\257\305\256\305\260y\341\273\263\303\275Y\341\273\262\303\235\303\246\307\275\303\206\307\274\305\223\305\222"
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h.in b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h.in
new file mode 100644
index 00000000000..030889bcd46
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/utf8strings.h.in
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * Gregorio 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.
+ *
+ * Gregorio is distributed in the hope that 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 Gregorio. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef UTF8STRINGS_H
+#define UTF8STRINGS_H
+
+#define ACCENTED_AE "'æ"
+#define ACCENTED_OE "'œ"
+
+/* This is a superset of Latin vowels which includes some French, Vietnamese,
+ * Slavic, Hungarian, and Norwegian vowels which don't interfere with Latin
+ * itself. For something more accurate, the user should consider the use of
+ * custom centering rules. */
+#define DEFAULT_VOWELS "aàáâăąåAÀÁÂĂĄÅeèéêëěęEÈÉÊËĚĘiìíîIÌÍÎ" \
+ "oòóôơőøOÒÓÔƠŐØuùúûưůűUÙÚÛƯŮŰyỳýYỲÝæǽÆǼœŒ"
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.c
new file mode 100644
index 00000000000..594657c409b
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.c
@@ -0,0 +1,1916 @@
+#line 2 "vowel/vowel-rules-l.c"
+
+#line 4 "vowel/vowel-rules-l.c"
+
+#define YY_INT_ALIGNED long int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer gregorio_vowel_rulefile__create_buffer
+#define yy_delete_buffer gregorio_vowel_rulefile__delete_buffer
+#define yy_flex_debug gregorio_vowel_rulefile__flex_debug
+#define yy_init_buffer gregorio_vowel_rulefile__init_buffer
+#define yy_flush_buffer gregorio_vowel_rulefile__flush_buffer
+#define yy_load_buffer_state gregorio_vowel_rulefile__load_buffer_state
+#define yy_switch_to_buffer gregorio_vowel_rulefile__switch_to_buffer
+#define yyin gregorio_vowel_rulefile_in
+#define yyleng gregorio_vowel_rulefile_leng
+#define yylex gregorio_vowel_rulefile_lex
+#define yylineno gregorio_vowel_rulefile_lineno
+#define yyout gregorio_vowel_rulefile_out
+#define yyrestart gregorio_vowel_rulefile_restart
+#define yytext gregorio_vowel_rulefile_text
+#define yywrap gregorio_vowel_rulefile_wrap
+#define yyalloc gregorio_vowel_rulefile_alloc
+#define yyrealloc gregorio_vowel_rulefile_realloc
+#define yyfree gregorio_vowel_rulefile_free
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 39
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE gregorio_vowel_rulefile_restart(gregorio_vowel_rulefile_in )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t gregorio_vowel_rulefile_leng;
+
+extern FILE *gregorio_vowel_rulefile_in, *gregorio_vowel_rulefile_out;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+ #define YY_LINENO_REWIND_TO(ptr)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up gregorio_vowel_rulefile_text. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up gregorio_vowel_rulefile_text again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ yy_size_t yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via gregorio_vowel_rulefile_restart()), so that the user can continue scanning by
+ * just pointing gregorio_vowel_rulefile_in at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when gregorio_vowel_rulefile_text is formed. */
+static char yy_hold_char;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t gregorio_vowel_rulefile_leng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow gregorio_vowel_rulefile_wrap()'s to do buffer switches
+ * instead of setting up a fresh gregorio_vowel_rulefile_in. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void gregorio_vowel_rulefile_restart (FILE *input_file );
+void gregorio_vowel_rulefile__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE gregorio_vowel_rulefile__create_buffer (FILE *file,int size );
+void gregorio_vowel_rulefile__delete_buffer (YY_BUFFER_STATE b );
+void gregorio_vowel_rulefile__flush_buffer (YY_BUFFER_STATE b );
+void gregorio_vowel_rulefile_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void gregorio_vowel_rulefile_pop_buffer_state (void );
+
+static void gregorio_vowel_rulefile_ensure_buffer_stack (void );
+static void gregorio_vowel_rulefile__load_buffer_state (void );
+static void gregorio_vowel_rulefile__init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER gregorio_vowel_rulefile__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *gregorio_vowel_rulefile_alloc (yy_size_t );
+void *gregorio_vowel_rulefile_realloc (void *,yy_size_t );
+void gregorio_vowel_rulefile_free (void * );
+
+#define yy_new_buffer gregorio_vowel_rulefile__create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ gregorio_vowel_rulefile_ensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ gregorio_vowel_rulefile__create_buffer(gregorio_vowel_rulefile_in,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ gregorio_vowel_rulefile_ensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ gregorio_vowel_rulefile__create_buffer(gregorio_vowel_rulefile_in,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define gregorio_vowel_rulefile_wrap() 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *gregorio_vowel_rulefile_in = (FILE *) 0, *gregorio_vowel_rulefile_out = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int gregorio_vowel_rulefile_lineno;
+
+int gregorio_vowel_rulefile_lineno = 1;
+
+extern char *gregorio_vowel_rulefile_text;
+#define yytext_ptr gregorio_vowel_rulefile_text
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up gregorio_vowel_rulefile_text.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ gregorio_vowel_rulefile_leng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 17
+#define YY_END_OF_BUFFER 18
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int32_t yy_accept[71] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 18, 16,
+ 15, 15, 13, 7, 16, 16, 16, 16, 16, 16,
+ 12, 9, 16, 10, 10, 10, 10, 7, 11, 13,
+ 0, 0, 0, 0, 0, 0, 0, 12, 8, 10,
+ 10, 0, 0, 0, 0, 0, 0, 14, 0, 0,
+ 0, 0, 0, 0, 6, 0, 0, 0, 0, 2,
+ 0, 3, 0, 4, 0, 0, 1, 0, 5, 0
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 2, 2, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 5, 1, 1, 1, 1, 1,
+ 1, 1, 1, 6, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 7, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 8, 1, 9, 1, 1, 1, 10, 1, 11, 12,
+
+ 13, 14, 15, 1, 16, 1, 1, 17, 1, 18,
+ 19, 20, 1, 21, 22, 23, 24, 25, 26, 27,
+ 28, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 29, 1, 1, 1,
+ 30, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 31, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int32_t yy_meta[32] =
+ { 0,
+ 1, 2, 3, 3, 2, 2, 2, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1
+ } ;
+
+static yyconst flex_int32_t yy_base[78] =
+ { 0,
+ 0, 30, 60, 66, 72, 0, 94, 102, 92, 139,
+ 139, 139, 0, 139, 74, 80, 68, 0, 69, 58,
+ 0, 139, 67, 0, 0, 0, 5, 0, 139, 0,
+ 69, 66, 70, 71, 67, 52, 30, 0, 139, 0,
+ 12, 49, 43, 43, 37, 40, 40, 139, 29, 25,
+ 32, 28, 29, 27, 139, 33, 15, 29, 12, 139,
+ 23, 139, 26, 139, 17, 8, 139, 0, 139, 139,
+ 111, 115, 119, 123, 127, 131, 134
+ } ;
+
+static yyconst flex_int32_t yy_def[78] =
+ { 0,
+ 71, 71, 72, 72, 71, 5, 73, 73, 70, 70,
+ 70, 70, 74, 70, 70, 70, 70, 70, 70, 70,
+ 75, 70, 70, 76, 76, 76, 77, 76, 70, 74,
+ 70, 70, 70, 70, 70, 70, 70, 75, 70, 76,
+ 77, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
+ 70, 70, 70, 70, 70, 70, 70
+ } ;
+
+static yyconst flex_int32_t yy_nxt[171] =
+ { 0,
+ 70, 11, 12, 11, 13, 70, 14, 40, 40, 15,
+ 70, 70, 34, 30, 40, 40, 16, 70, 70, 17,
+ 30, 18, 70, 35, 19, 70, 70, 69, 68, 67,
+ 20, 11, 12, 11, 13, 66, 14, 65, 64, 15,
+ 63, 62, 61, 60, 59, 58, 16, 57, 56, 17,
+ 55, 18, 54, 53, 19, 52, 51, 50, 49, 48,
+ 20, 11, 12, 11, 13, 10, 14, 11, 12, 11,
+ 13, 10, 14, 11, 12, 11, 13, 47, 14, 22,
+ 46, 45, 44, 43, 42, 39, 37, 36, 33, 32,
+ 31, 70, 70, 70, 23, 25, 26, 25, 27, 70,
+
+ 28, 70, 29, 25, 26, 25, 27, 70, 28, 70,
+ 29, 10, 10, 10, 10, 21, 21, 21, 21, 24,
+ 24, 24, 24, 30, 30, 70, 30, 38, 70, 70,
+ 38, 40, 40, 40, 41, 41, 41, 41, 9, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70
+ } ;
+
+static yyconst flex_int32_t yy_chk[171] =
+ { 0,
+ 0, 1, 1, 1, 1, 0, 1, 27, 27, 1,
+ 0, 0, 18, 27, 41, 41, 1, 0, 0, 1,
+ 41, 1, 0, 18, 1, 0, 0, 68, 66, 65,
+ 1, 2, 2, 2, 2, 63, 2, 61, 59, 2,
+ 58, 57, 56, 54, 53, 52, 2, 51, 50, 2,
+ 49, 2, 47, 46, 2, 45, 44, 43, 42, 37,
+ 2, 3, 3, 3, 3, 3, 3, 4, 4, 4,
+ 4, 4, 4, 5, 5, 5, 5, 36, 5, 5,
+ 35, 34, 33, 32, 31, 23, 20, 19, 17, 16,
+ 15, 9, 0, 0, 5, 7, 7, 7, 7, 0,
+
+ 7, 0, 7, 8, 8, 8, 8, 0, 8, 0,
+ 8, 71, 71, 71, 71, 72, 72, 72, 72, 73,
+ 73, 73, 73, 74, 74, 0, 74, 75, 0, 0,
+ 75, 76, 76, 76, 77, 77, 77, 77, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70
+ } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int gregorio_vowel_rulefile__flex_debug;
+int gregorio_vowel_rulefile__flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *gregorio_vowel_rulefile_text;
+#line 1 "vowel/vowel-rules.l"
+#line 2 "vowel/vowel-rules.l"
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "struct.h"
+#include "messages.h"
+
+#include "vowel.h"
+
+#include "vowel-rules.h"
+#include "vowel-rules-y.h"
+
+#define YY_NO_INPUT
+
+static __inline void save_lval(void)
+{
+ gregorio_vowel_rulefile_lval =
+ malloc((gregorio_vowel_rulefile_leng + 1) * sizeof(char));
+ strncpy(gregorio_vowel_rulefile_lval, gregorio_vowel_rulefile_text,
+ gregorio_vowel_rulefile_leng);
+ gregorio_vowel_rulefile_lval[gregorio_vowel_rulefile_leng] = '\0';
+}
+
+static __inline void invalid(void)
+{
+ gregorio_messagef("gregorio_vowel_rulefile_lex", VERBOSITY_WARNING, 0,
+ _("invalid character in vowel file: %c"),
+ *gregorio_vowel_rulefile_text);
+}
+
+
+
+#line 583 "vowel/vowel-rules-l.c"
+
+#define INITIAL 0
+#define chars 1
+#define lang 2
+#define langname 3
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int gregorio_vowel_rulefile_lex_destroy (void );
+
+int gregorio_vowel_rulefile_get_debug (void );
+
+void gregorio_vowel_rulefile_set_debug (int debug_flag );
+
+YY_EXTRA_TYPE gregorio_vowel_rulefile_get_extra (void );
+
+void gregorio_vowel_rulefile_set_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *gregorio_vowel_rulefile_get_in (void );
+
+void gregorio_vowel_rulefile_set_in (FILE * in_str );
+
+FILE *gregorio_vowel_rulefile_get_out (void );
+
+void gregorio_vowel_rulefile_set_out (FILE * out_str );
+
+yy_size_t gregorio_vowel_rulefile_get_leng (void );
+
+char *gregorio_vowel_rulefile_get_text (void );
+
+int gregorio_vowel_rulefile_get_lineno (void );
+
+void gregorio_vowel_rulefile_set_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int gregorio_vowel_rulefile_wrap (void );
+#else
+extern int gregorio_vowel_rulefile_wrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+ static int yy_start_stack_ptr = 0;
+ static int yy_start_stack_depth = 0;
+ static int *yy_start_stack = NULL;
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO do { if (fwrite( gregorio_vowel_rulefile_text, gregorio_vowel_rulefile_leng, 1, gregorio_vowel_rulefile_out )) {} } while (0)
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ size_t n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( gregorio_vowel_rulefile_in )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( gregorio_vowel_rulefile_in ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, gregorio_vowel_rulefile_in))==0 && ferror(gregorio_vowel_rulefile_in)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(gregorio_vowel_rulefile_in); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int gregorio_vowel_rulefile_lex (void);
+
+#define YY_DECL int gregorio_vowel_rulefile_lex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after gregorio_vowel_rulefile_text and gregorio_vowel_rulefile_leng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! gregorio_vowel_rulefile_in )
+ gregorio_vowel_rulefile_in = stdin;
+
+ if ( ! gregorio_vowel_rulefile_out )
+ gregorio_vowel_rulefile_out = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ gregorio_vowel_rulefile_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ gregorio_vowel_rulefile__create_buffer(gregorio_vowel_rulefile_in,YY_BUF_SIZE );
+ }
+
+ gregorio_vowel_rulefile__load_buffer_state( );
+ }
+
+ {
+#line 71 "vowel/vowel-rules.l"
+
+
+#line 800 "vowel/vowel-rules-l.c"
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of gregorio_vowel_rulefile_text. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 71 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_base[yy_current_state] != 139 );
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+ if ( yy_act == 0 )
+ { /* have to back up */
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ yy_act = yy_accept[yy_current_state];
+ }
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = (yy_hold_char);
+ yy_cp = (yy_last_accepting_cpos);
+ yy_current_state = (yy_last_accepting_state);
+ goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 73 "vowel/vowel-rules.l"
+{ BEGIN(lang); return LANGUAGE; }
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 74 "vowel/vowel-rules.l"
+{ BEGIN(chars); return VOWEL; }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 75 "vowel/vowel-rules.l"
+{ BEGIN(chars); return PREFIX; }
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 76 "vowel/vowel-rules.l"
+{ BEGIN(chars); return SUFFIX; }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 77 "vowel/vowel-rules.l"
+{ BEGIN(chars); return SECONDARY; }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 78 "vowel/vowel-rules.l"
+{ BEGIN(lang); return ALIAS; }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 79 "vowel/vowel-rules.l"
+{ BEGIN(INITIAL); return SEMICOLON; }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 80 "vowel/vowel-rules.l"
+{ return TO; }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 81 "vowel/vowel-rules.l"
+{ BEGIN(langname); }
+ YY_BREAK
+case 10:
+/* rule 10 can match eol */
+YY_RULE_SETUP
+#line 82 "vowel/vowel-rules.l"
+{ save_lval(); return NAME; }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 83 "vowel/vowel-rules.l"
+{ BEGIN(lang); }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 84 "vowel/vowel-rules.l"
+{ save_lval(); return CHARACTERS; }
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 85 "vowel/vowel-rules.l"
+{ }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 86 "vowel/vowel-rules.l"
+{ }
+ YY_BREAK
+case 15:
+/* rule 15 can match eol */
+YY_RULE_SETUP
+#line 87 "vowel/vowel-rules.l"
+{ }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 88 "vowel/vowel-rules.l"
+{ invalid(); return INVALID; }
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 90 "vowel/vowel-rules.l"
+ECHO;
+ YY_BREAK
+#line 944 "vowel/vowel-rules-l.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(chars):
+case YY_STATE_EOF(lang):
+case YY_STATE_EOF(langname):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed gregorio_vowel_rulefile_in at a new source and called
+ * gregorio_vowel_rulefile_lex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = gregorio_vowel_rulefile_in;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_c_buf_p);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( gregorio_vowel_rulefile_wrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * gregorio_vowel_rulefile_text, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+ } /* end of user's declarations */
+} /* end of gregorio_vowel_rulefile_lex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ yy_size_t num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ yy_size_t new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ gregorio_vowel_rulefile_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ gregorio_vowel_rulefile_restart(gregorio_vowel_rulefile_in );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) gregorio_vowel_rulefile_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 71 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+ register char *yy_cp = (yy_c_buf_p);
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ (yy_last_accepting_state) = yy_current_state;
+ (yy_last_accepting_cpos) = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 71 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 70);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ gregorio_vowel_rulefile_restart(gregorio_vowel_rulefile_in );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( gregorio_vowel_rulefile_wrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve gregorio_vowel_rulefile_text */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void gregorio_vowel_rulefile_restart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ gregorio_vowel_rulefile_ensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ gregorio_vowel_rulefile__create_buffer(gregorio_vowel_rulefile_in,YY_BUF_SIZE );
+ }
+
+ gregorio_vowel_rulefile__init_buffer(YY_CURRENT_BUFFER,input_file );
+ gregorio_vowel_rulefile__load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void gregorio_vowel_rulefile__switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * gregorio_vowel_rulefile_pop_buffer_state();
+ * gregorio_vowel_rulefile_push_buffer_state(new_buffer);
+ */
+ gregorio_vowel_rulefile_ensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ gregorio_vowel_rulefile__load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (gregorio_vowel_rulefile_wrap()) processing, but the only time this flag
+ * is looked at is after gregorio_vowel_rulefile_wrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void gregorio_vowel_rulefile__load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ gregorio_vowel_rulefile_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE gregorio_vowel_rulefile__create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) gregorio_vowel_rulefile_alloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in gregorio_vowel_rulefile__create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) gregorio_vowel_rulefile_alloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in gregorio_vowel_rulefile__create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ gregorio_vowel_rulefile__init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with gregorio_vowel_rulefile__create_buffer()
+ *
+ */
+ void gregorio_vowel_rulefile__delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ gregorio_vowel_rulefile_free((void *) b->yy_ch_buf );
+
+ gregorio_vowel_rulefile_free((void *) b );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a gregorio_vowel_rulefile_restart() or at EOF.
+ */
+ static void gregorio_vowel_rulefile__init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ gregorio_vowel_rulefile__flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then gregorio_vowel_rulefile__init_buffer was _probably_
+ * called from gregorio_vowel_rulefile_restart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void gregorio_vowel_rulefile__flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ gregorio_vowel_rulefile__load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void gregorio_vowel_rulefile_push_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ gregorio_vowel_rulefile_ensure_buffer_stack();
+
+ /* This block is copied from gregorio_vowel_rulefile__switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from gregorio_vowel_rulefile__switch_to_buffer. */
+ gregorio_vowel_rulefile__load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void gregorio_vowel_rulefile_pop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ gregorio_vowel_rulefile__delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ gregorio_vowel_rulefile__load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void gregorio_vowel_rulefile_ensure_buffer_stack (void)
+{
+ yy_size_t num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)gregorio_vowel_rulefile_alloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in gregorio_vowel_rulefile_ensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)gregorio_vowel_rulefile_realloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in gregorio_vowel_rulefile_ensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) gregorio_vowel_rulefile_alloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in gregorio_vowel_rulefile__scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ gregorio_vowel_rulefile__switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to gregorio_vowel_rulefile_lex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * gregorio_vowel_rulefile__scan_bytes() instead.
+ */
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_string (yyconst char * yystr )
+{
+
+ return gregorio_vowel_rulefile__scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to gregorio_vowel_rulefile_lex() will
+ * scan from a @e copy of @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ yy_size_t i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) gregorio_vowel_rulefile_alloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in gregorio_vowel_rulefile__scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = gregorio_vowel_rulefile__scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in gregorio_vowel_rulefile__scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up gregorio_vowel_rulefile_text. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ gregorio_vowel_rulefile_text[gregorio_vowel_rulefile_leng] = (yy_hold_char); \
+ (yy_c_buf_p) = gregorio_vowel_rulefile_text + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ gregorio_vowel_rulefile_leng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int gregorio_vowel_rulefile_get_lineno (void)
+{
+
+ return gregorio_vowel_rulefile_lineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *gregorio_vowel_rulefile_get_in (void)
+{
+ return gregorio_vowel_rulefile_in;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *gregorio_vowel_rulefile_get_out (void)
+{
+ return gregorio_vowel_rulefile_out;
+}
+
+/** Get the length of the current token.
+ *
+ */
+yy_size_t gregorio_vowel_rulefile_get_leng (void)
+{
+ return gregorio_vowel_rulefile_leng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *gregorio_vowel_rulefile_get_text (void)
+{
+ return gregorio_vowel_rulefile_text;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void gregorio_vowel_rulefile_set_lineno (int line_number )
+{
+
+ gregorio_vowel_rulefile_lineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see gregorio_vowel_rulefile__switch_to_buffer
+ */
+void gregorio_vowel_rulefile_set_in (FILE * in_str )
+{
+ gregorio_vowel_rulefile_in = in_str ;
+}
+
+void gregorio_vowel_rulefile_set_out (FILE * out_str )
+{
+ gregorio_vowel_rulefile_out = out_str ;
+}
+
+int gregorio_vowel_rulefile_get_debug (void)
+{
+ return gregorio_vowel_rulefile__flex_debug;
+}
+
+void gregorio_vowel_rulefile_set_debug (int bdebug )
+{
+ gregorio_vowel_rulefile__flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from gregorio_vowel_rulefile_lex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+ (yy_start_stack_ptr) = 0;
+ (yy_start_stack_depth) = 0;
+ (yy_start_stack) = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ gregorio_vowel_rulefile_in = stdin;
+ gregorio_vowel_rulefile_out = stdout;
+#else
+ gregorio_vowel_rulefile_in = (FILE *) 0;
+ gregorio_vowel_rulefile_out = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * gregorio_vowel_rulefile_lex_init()
+ */
+ return 0;
+}
+
+/* gregorio_vowel_rulefile_lex_destroy is for both reentrant and non-reentrant scanners. */
+int gregorio_vowel_rulefile_lex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ gregorio_vowel_rulefile__delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ gregorio_vowel_rulefile_pop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ gregorio_vowel_rulefile_free((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Destroy the start condition stack. */
+ gregorio_vowel_rulefile_free((yy_start_stack) );
+ (yy_start_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * gregorio_vowel_rulefile_lex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *gregorio_vowel_rulefile_alloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *gregorio_vowel_rulefile_realloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void gregorio_vowel_rulefile_free (void * ptr )
+{
+ free( (char *) ptr ); /* see gregorio_vowel_rulefile_realloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 90 "vowel/vowel-rules.l"
+
+
+
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.h
new file mode 100644
index 00000000000..f954c765b0f
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-l.h
@@ -0,0 +1,325 @@
+#ifndef gregorio_vowel_rulefile_HEADER_H
+#define gregorio_vowel_rulefile_HEADER_H 1
+#define gregorio_vowel_rulefile_IN_HEADER 1
+
+#line 6 "vowel/vowel-rules-l.h"
+
+#line 8 "vowel/vowel-rules-l.h"
+
+#define YY_INT_ALIGNED long int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 39
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t gregorio_vowel_rulefile_leng;
+
+extern FILE *gregorio_vowel_rulefile_in, *gregorio_vowel_rulefile_out;
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ yy_size_t yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+void gregorio_vowel_rulefile_restart (FILE *input_file );
+void gregorio_vowel_rulefile__switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE gregorio_vowel_rulefile__create_buffer (FILE *file,int size );
+void gregorio_vowel_rulefile__delete_buffer (YY_BUFFER_STATE b );
+void gregorio_vowel_rulefile__flush_buffer (YY_BUFFER_STATE b );
+void gregorio_vowel_rulefile_push_buffer_state (YY_BUFFER_STATE new_buffer );
+void gregorio_vowel_rulefile_pop_buffer_state (void );
+
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE gregorio_vowel_rulefile__scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *gregorio_vowel_rulefile_alloc (yy_size_t );
+void *gregorio_vowel_rulefile_realloc (void *,yy_size_t );
+void gregorio_vowel_rulefile_free (void * );
+
+/* Begin user sect3 */
+
+#define gregorio_vowel_rulefile_wrap() 1
+#define YY_SKIP_YYWRAP
+
+extern int gregorio_vowel_rulefile_lineno;
+
+extern char *gregorio_vowel_rulefile_text;
+#define yytext_ptr gregorio_vowel_rulefile_text
+
+#ifdef YY_HEADER_EXPORT_START_CONDITIONS
+#define INITIAL 0
+#define chars 1
+#define lang 2
+#define langname 3
+
+#endif
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int gregorio_vowel_rulefile_lex_destroy (void );
+
+int gregorio_vowel_rulefile_get_debug (void );
+
+void gregorio_vowel_rulefile_set_debug (int debug_flag );
+
+YY_EXTRA_TYPE gregorio_vowel_rulefile_get_extra (void );
+
+void gregorio_vowel_rulefile_set_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *gregorio_vowel_rulefile_get_in (void );
+
+void gregorio_vowel_rulefile_set_in (FILE * in_str );
+
+FILE *gregorio_vowel_rulefile_get_out (void );
+
+void gregorio_vowel_rulefile_set_out (FILE * out_str );
+
+yy_size_t gregorio_vowel_rulefile_get_leng (void );
+
+char *gregorio_vowel_rulefile_get_text (void );
+
+int gregorio_vowel_rulefile_get_lineno (void );
+
+void gregorio_vowel_rulefile_set_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int gregorio_vowel_rulefile_wrap (void );
+#else
+extern int gregorio_vowel_rulefile_wrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int gregorio_vowel_rulefile_lex (void);
+
+#define YY_DECL int gregorio_vowel_rulefile_lex (void)
+#endif /* !YY_DECL */
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+#line 90 "vowel/vowel-rules.l"
+
+
+#line 324 "vowel/vowel-rules-l.h"
+#undef gregorio_vowel_rulefile_IN_HEADER
+#endif /* gregorio_vowel_rulefile_HEADER_H */
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.c
new file mode 100644
index 00000000000..c024316fb94
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.c
@@ -0,0 +1,1606 @@
+/* A Bison parser, made by GNU Bison 3.0.4. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015 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 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "3.0.4"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+
+/* Substitute the variable and function names. */
+#define yyparse gregorio_vowel_rulefile_parse
+#define yylex gregorio_vowel_rulefile_lex
+#define yyerror gregorio_vowel_rulefile_error
+#define yydebug gregorio_vowel_rulefile_debug
+#define yynerrs gregorio_vowel_rulefile_nerrs
+
+#define yylval gregorio_vowel_rulefile_lval
+#define yychar gregorio_vowel_rulefile_char
+
+/* Copy the first part of user declarations. */
+#line 1 "vowel/vowel-rules.y" /* yacc.c:339 */
+
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "bool.h"
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+
+#include "vowel.h"
+
+#include "vowel-rules.h"
+#include "vowel-rules-l.h"
+
+#if ! defined lint || defined __GNUC__
+# define IGNORE(e) ((void) (e))
+#else
+# define IGNORE(e) /* empty */
+#endif
+
+/* NOTE: This parser might allocate a new value for language; this value MUST
+ * BE FREED after the parser returns (if the value of the language pointer
+ * changes, then free the pointer). This parser DOES free the language
+ * pointer before changing it, if status points to RFPS_ALIASED. */
+
+/* uncomment it if you want to have an interactive shell to understand the
+ * details on how bison works for a certain input */
+/*int gregorio_vowel_rulefile_debug=1;*/
+
+static void gregorio_vowel_rulefile_error(const char *const filename,
+ char **const language, rulefile_parse_status *const status,
+ const char *const error_str)
+{
+ IGNORE(language);
+ IGNORE(status);
+ gregorio_messagef("gregorio_vowel_rulefile_parse", VERBOSITY_ERROR, 0,
+ _("%s: %s"), filename, error_str);
+}
+
+/* this returns false until the language *after* the desired language */
+static __inline bool match_language(char **language,
+ rulefile_parse_status *status, char *const name)
+{
+ if (*status == RFPS_FOUND) {
+ free(name);
+ return true;
+ }
+
+ if (strcmp(*language, name) == 0) {
+ *status = RFPS_FOUND;
+ }
+
+ free(name);
+ return false;
+}
+
+static __inline void alias(char **const language,
+ rulefile_parse_status *const status, char *const name,
+ char *const target)
+{
+ if (strcmp(*language, name) == 0) {
+ gregorio_messagef("alias", VERBOSITY_INFO, 0, _("Aliasing %s to %s"),
+ name, target);
+ if (*status == RFPS_ALIASED) {
+ free(*language);
+ }
+ *language = target;
+ *status = RFPS_ALIASED;
+ } else {
+ free(target);
+ }
+ free(name);
+}
+
+static __inline void add(const rulefile_parse_status *const status,
+ void (*const fn)(const char *), char *const value)
+{
+ if (*status == RFPS_FOUND) {
+ fn(value);
+ }
+ free(value);
+}
+
+#define _MATCH(NAME) if (match_language(language, status, NAME)) YYACCEPT
+#define _ALIAS(NAME, TARGET) alias(language, status, NAME, TARGET)
+#define _ADD(TABLE, CHARS) add(status, gregorio_##TABLE##_table_add, CHARS)
+
+
+#line 181 "vowel/vowel-rules-y.c" /* yacc.c:339 */
+
+# ifndef YY_NULLPTR
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* In a future release of Bison, this section will be replaced
+ by #include "vowel-rules-y.h". */
+#ifndef YY_GREGORIO_VOWEL_RULEFILE_VOWEL_VOWEL_RULES_Y_H_INCLUDED
+# define YY_GREGORIO_VOWEL_RULEFILE_VOWEL_VOWEL_RULES_Y_H_INCLUDED
+/* Debug traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int gregorio_vowel_rulefile_debug;
+#endif
+
+/* Token type. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ enum yytokentype
+ {
+ LANGUAGE = 258,
+ VOWEL = 259,
+ PREFIX = 260,
+ SUFFIX = 261,
+ SECONDARY = 262,
+ ALIAS = 263,
+ SEMICOLON = 264,
+ TO = 265,
+ NAME = 266,
+ CHARACTERS = 267,
+ INVALID = 268
+ };
+#endif
+/* Tokens. */
+#define LANGUAGE 258
+#define VOWEL 259
+#define PREFIX 260
+#define SUFFIX 261
+#define SECONDARY 262
+#define ALIAS 263
+#define SEMICOLON 264
+#define TO 265
+#define NAME 266
+#define CHARACTERS 267
+#define INVALID 268
+
+/* Value type. */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE gregorio_vowel_rulefile_lval;
+
+int gregorio_vowel_rulefile_parse (const char *const filename, char **language, rulefile_parse_status *const status);
+
+#endif /* !YY_GREGORIO_VOWEL_RULEFILE_VOWEL_VOWEL_RULES_Y_H_INCLUDED */
+
+/* Copy the second part of user declarations. */
+
+#line 258 "vowel/vowel-rules-y.c" /* yacc.c:358 */
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#else
+typedef signed char yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(Msgid) Msgid
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__ \
+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+# define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(E) ((void) (E))
+#else
+# define YYUSE(E) /* empty */
+#endif
+
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define YY_INITIAL_VALUE(Value) Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined EXIT_SUCCESS
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined EXIT_SUCCESS
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+# else
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 2
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 21
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 14
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 7
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 17
+/* YYNSTATES -- Number of states. */
+#define YYNSTATES 28
+
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 268
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, without out-of-bounds checking. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13
+};
+
+#if YYDEBUG
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
+static const yytype_uint8 yyrline[] =
+{
+ 0, 118, 118, 120, 124, 125, 126, 127, 128, 129,
+ 132, 134, 137, 139, 142, 144, 147, 149
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || 0
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "LANGUAGE", "VOWEL", "PREFIX", "SUFFIX",
+ "SECONDARY", "ALIAS", "SEMICOLON", "TO", "NAME", "CHARACTERS", "INVALID",
+ "$accept", "rules", "rule", "vowels", "prefixes", "suffixes",
+ "secondaries", YY_NULLPTR
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+ (internal) symbol number NUM (which must be that of a token). */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268
+};
+# endif
+
+#define YYPACT_NINF -11
+
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-11)))
+
+#define YYTABLE_NINF -1
+
+#define yytable_value_is_error(Yytable_value) \
+ 0
+
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+static const yytype_int8 yypact[] =
+{
+ -11, 0, -11, -10, -11, -11, -11, -11, -9, -11,
+ 8, 1, 2, 3, 7, -1, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, 9, 12, -11
+};
+
+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 2, 0, 1, 0, 10, 12, 14, 16, 0, 3,
+ 0, 0, 0, 0, 0, 0, 4, 6, 11, 7,
+ 13, 8, 15, 9, 17, 0, 0, 5
+};
+
+ /* YYPGOTO[NTERM-NUM]. */
+static const yytype_int8 yypgoto[] =
+{
+ -11, -11, -11, -11, -11, -11, -11
+};
+
+ /* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ -1, 1, 9, 11, 12, 13, 14
+};
+
+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+static const yytype_uint8 yytable[] =
+{
+ 2, 10, 15, 3, 4, 5, 6, 7, 8, 25,
+ 17, 19, 21, 18, 20, 22, 23, 16, 0, 24,
+ 26, 27
+};
+
+static const yytype_int8 yycheck[] =
+{
+ 0, 11, 11, 3, 4, 5, 6, 7, 8, 10,
+ 9, 9, 9, 12, 12, 12, 9, 9, -1, 12,
+ 11, 9
+};
+
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 15, 0, 3, 4, 5, 6, 7, 8, 16,
+ 11, 17, 18, 19, 20, 11, 9, 9, 12, 9,
+ 12, 9, 12, 9, 12, 10, 11, 9
+};
+
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 14, 15, 15, 16, 16, 16, 16, 16, 16,
+ 17, 17, 18, 18, 19, 19, 20, 20
+};
+
+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 3, 5, 3, 3, 3, 3,
+ 0, 2, 0, 2, 0, 2, 0, 2
+};
+
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (filename, language, status, YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (0)
+
+/* Error token number */
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value, filename, language, status); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT. |
+`----------------------------------------*/
+
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, const char *const filename, char **language, rulefile_parse_status *const status)
+{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
+ YYUSE (filename);
+ YYUSE (language);
+ YYUSE (status);
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ YYUSE (yytype);
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, const char *const filename, char **language, rulefile_parse_status *const status)
+{
+ YYFPRINTF (yyoutput, "%s %s (",
+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, filename, language, status);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+static void
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, const char *const filename, char **language, rulefile_parse_status *const status)
+{
+ unsigned long int yylno = yyrline[yyrule];
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , filename, language, status);
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, Rule, filename, language, status); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+yystrlen (const char *yystr)
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULLPTR;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ {
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+ }
+
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
+
+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, const char *const filename, char **language, rulefile_parse_status *const status)
+{
+ YYUSE (yyvaluep);
+ YYUSE (filename);
+ YYUSE (language);
+ YYUSE (status);
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+}
+
+
+
+
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+int
+yyparse (const char *const filename, char **language, rulefile_parse_status *const status)
+{
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ 'yyss': related to states.
+ 'yyvs': related to semantic values.
+
+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yyssp = yyss = yyssa;
+ yyvsp = yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = yylex ();
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ '$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 4:
+#line 124 "vowel/vowel-rules.y" /* yacc.c:1646 */
+ { _MATCH((yyvsp[-1])); }
+#line 1346 "vowel/vowel-rules-y.c" /* yacc.c:1646 */
+ break;
+
+ case 5:
+#line 125 "vowel/vowel-rules.y" /* yacc.c:1646 */
+ { _ALIAS((yyvsp[-3]), (yyvsp[-1])); }
+#line 1352 "vowel/vowel-rules-y.c" /* yacc.c:1646 */
+ break;
+
+ case 11:
+#line 134 "vowel/vowel-rules.y" /* yacc.c:1646 */
+ { _ADD(vowel, (yyvsp[0])); }
+#line 1358 "vowel/vowel-rules-y.c" /* yacc.c:1646 */
+ break;
+
+ case 13:
+#line 139 "vowel/vowel-rules.y" /* yacc.c:1646 */
+ { _ADD(prefix, (yyvsp[0])); }
+#line 1364 "vowel/vowel-rules-y.c" /* yacc.c:1646 */
+ break;
+
+ case 15:
+#line 144 "vowel/vowel-rules.y" /* yacc.c:1646 */
+ { _ADD(suffix, (yyvsp[0])); }
+#line 1370 "vowel/vowel-rules-y.c" /* yacc.c:1646 */
+ break;
+
+ case 17:
+#line 149 "vowel/vowel-rules.y" /* yacc.c:1646 */
+ { _ADD(secondary, (yyvsp[0])); }
+#line 1376 "vowel/vowel-rules-y.c" /* yacc.c:1646 */
+ break;
+
+
+#line 1380 "vowel/vowel-rules-y.c" /* yacc.c:1646 */
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+ /* Now 'shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (filename, language, status, YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
+ {
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (filename, language, status, yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
+ }
+# undef YYSYNTAX_ERROR
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, filename, language, status);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, filename, language, status);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined yyoverflow || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (filename, language, status, YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, filename, language, status);
+ }
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, filename, language, status);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ return yyresult;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.h
new file mode 100644
index 00000000000..df47b6e2d5a
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules-y.h
@@ -0,0 +1,86 @@
+/* A Bison parser, made by GNU Bison 3.0.4. */
+
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2015 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 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+#ifndef YY_GREGORIO_VOWEL_RULEFILE_VOWEL_VOWEL_RULES_Y_H_INCLUDED
+# define YY_GREGORIO_VOWEL_RULEFILE_VOWEL_VOWEL_RULES_Y_H_INCLUDED
+/* Debug traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int gregorio_vowel_rulefile_debug;
+#endif
+
+/* Token type. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ enum yytokentype
+ {
+ LANGUAGE = 258,
+ VOWEL = 259,
+ PREFIX = 260,
+ SUFFIX = 261,
+ SECONDARY = 262,
+ ALIAS = 263,
+ SEMICOLON = 264,
+ TO = 265,
+ NAME = 266,
+ CHARACTERS = 267,
+ INVALID = 268
+ };
+#endif
+/* Tokens. */
+#define LANGUAGE 258
+#define VOWEL 259
+#define PREFIX 260
+#define SUFFIX 261
+#define SECONDARY 262
+#define ALIAS 263
+#define SEMICOLON 264
+#define TO 265
+#define NAME 266
+#define CHARACTERS 267
+#define INVALID 268
+
+/* Value type. */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef int YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE gregorio_vowel_rulefile_lval;
+
+int gregorio_vowel_rulefile_parse (const char *const filename, char **language, rulefile_parse_status *const status);
+
+#endif /* !YY_GREGORIO_VOWEL_RULEFILE_VOWEL_VOWEL_RULES_Y_H_INCLUDED */
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.h
new file mode 100644
index 00000000000..bad87c1a400
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#define YYSTYPE char *
+#define YYSTYPE_IS_DECLARED 1
+
+int gregorio_vowel_rulefile_lex(void);
+#define YY_DECL int gregorio_vowel_rulefile_lex(void)
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.l b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.l
new file mode 100644
index 00000000000..2b0a318a951
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.l
@@ -0,0 +1,91 @@
+%{
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "struct.h"
+#include "messages.h"
+
+#include "vowel.h"
+
+#include "vowel-rules.h"
+#include "vowel-rules-y.h"
+
+#define YY_NO_INPUT
+
+static __inline void save_lval(void)
+{
+ gregorio_vowel_rulefile_lval =
+ malloc((gregorio_vowel_rulefile_leng + 1) * sizeof(char));
+ strncpy(gregorio_vowel_rulefile_lval, gregorio_vowel_rulefile_text,
+ gregorio_vowel_rulefile_leng);
+ gregorio_vowel_rulefile_lval[gregorio_vowel_rulefile_leng] = '\0';
+}
+
+static __inline void invalid(void)
+{
+ gregorio_messagef("gregorio_vowel_rulefile_lex", VERBOSITY_WARNING, 0,
+ _("invalid character in vowel file: %c"),
+ *gregorio_vowel_rulefile_text);
+}
+%}
+
+%x chars
+%x lang
+%x langname
+
+%option stack
+%option pointer
+%option nounput
+%option noyy_push_state
+%option noyy_pop_state
+%option noyy_top_state
+%option align
+%option noread
+%option nomain
+%option noalways-interactive
+%option nonever-interactive
+%option prefix="gregorio_vowel_rulefile_"
+%option noyywrap
+%option 8bit
+
+%%
+
+<INITIAL>language { BEGIN(lang); return LANGUAGE; }
+<INITIAL>vowel { BEGIN(chars); return VOWEL; }
+<INITIAL>prefix { BEGIN(chars); return PREFIX; }
+<INITIAL>suffix { BEGIN(chars); return SUFFIX; }
+<INITIAL>secondary { BEGIN(chars); return SECONDARY; }
+<INITIAL>alias { BEGIN(lang); return ALIAS; }
+<*>; { BEGIN(INITIAL); return SEMICOLON; }
+<lang>to { return TO; }
+<lang>"[" { BEGIN(langname); }
+<langname>[^\]]+ { save_lval(); return NAME; }
+<langname>"]" { BEGIN(lang); }
+<chars>[^;,# \t\n\r\v\f]+ { save_lval(); return CHARACTERS; }
+<*>#[^\n\r]* { }
+<INITIAL>\xEF\xBB\xBF { }
+<*>[\ \t\n\r\v\f] { }
+<*>. { invalid(); return INVALID; }
+
+%%
+
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.y b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.y
new file mode 100644
index 00000000000..3c5bc82ee24
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel-rules.y
@@ -0,0 +1,150 @@
+%{
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "bool.h"
+#include "struct.h"
+#include "unicode.h"
+#include "messages.h"
+
+#include "vowel.h"
+
+#include "vowel-rules.h"
+#include "vowel-rules-l.h"
+
+#if ! defined lint || defined __GNUC__
+# define IGNORE(e) ((void) (e))
+#else
+# define IGNORE(e) /* empty */
+#endif
+
+/* NOTE: This parser might allocate a new value for language; this value MUST
+ * BE FREED after the parser returns (if the value of the language pointer
+ * changes, then free the pointer). This parser DOES free the language
+ * pointer before changing it, if status points to RFPS_ALIASED. */
+
+/* uncomment it if you want to have an interactive shell to understand the
+ * details on how bison works for a certain input */
+/*int gregorio_vowel_rulefile_debug=1;*/
+
+static void gregorio_vowel_rulefile_error(const char *const filename,
+ char **const language, rulefile_parse_status *const status,
+ const char *const error_str)
+{
+ IGNORE(language);
+ IGNORE(status);
+ gregorio_messagef("gregorio_vowel_rulefile_parse", VERBOSITY_ERROR, 0,
+ _("%s: %s"), filename, error_str);
+}
+
+/* this returns false until the language *after* the desired language */
+static __inline bool match_language(char **language,
+ rulefile_parse_status *status, char *const name)
+{
+ if (*status == RFPS_FOUND) {
+ free(name);
+ return true;
+ }
+
+ if (strcmp(*language, name) == 0) {
+ *status = RFPS_FOUND;
+ }
+
+ free(name);
+ return false;
+}
+
+static __inline void alias(char **const language,
+ rulefile_parse_status *const status, char *const name,
+ char *const target)
+{
+ if (strcmp(*language, name) == 0) {
+ gregorio_messagef("alias", VERBOSITY_INFO, 0, _("Aliasing %s to %s"),
+ name, target);
+ if (*status == RFPS_ALIASED) {
+ free(*language);
+ }
+ *language = target;
+ *status = RFPS_ALIASED;
+ } else {
+ free(target);
+ }
+ free(name);
+}
+
+static __inline void add(const rulefile_parse_status *const status,
+ void (*const fn)(const char *), char *const value)
+{
+ if (*status == RFPS_FOUND) {
+ fn(value);
+ }
+ free(value);
+}
+
+#define _MATCH(NAME) if (match_language(language, status, NAME)) YYACCEPT
+#define _ALIAS(NAME, TARGET) alias(language, status, NAME, TARGET)
+#define _ADD(TABLE, CHARS) add(status, gregorio_##TABLE##_table_add, CHARS)
+
+%}
+
+%name-prefix "gregorio_vowel_rulefile_"
+%parse-param { const char *const filename }
+%parse-param { char **language }
+%parse-param { rulefile_parse_status *const status }
+
+%token LANGUAGE VOWEL PREFIX SUFFIX SECONDARY ALIAS SEMICOLON TO
+%token NAME CHARACTERS INVALID
+
+%%
+
+rules
+ :
+ | rules rule
+ ;
+
+rule
+ : LANGUAGE NAME SEMICOLON { _MATCH($2); }
+ | ALIAS NAME TO NAME SEMICOLON { _ALIAS($2, $4); }
+ | VOWEL vowels SEMICOLON
+ | PREFIX prefixes SEMICOLON
+ | SUFFIX suffixes SEMICOLON
+ | SECONDARY secondaries SEMICOLON
+ ;
+
+vowels
+ :
+ | vowels CHARACTERS { _ADD(vowel, $2); }
+ ;
+
+prefixes
+ :
+ | prefixes CHARACTERS { _ADD(prefix, $2); }
+ ;
+
+suffixes
+ :
+ | suffixes CHARACTERS { _ADD(suffix, $2); }
+ ;
+
+secondaries
+ :
+ | secondaries CHARACTERS { _ADD(secondary, $2); }
+ ;
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.c b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.c
new file mode 100644
index 00000000000..b58148ab17e
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.c
@@ -0,0 +1,456 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <errno.h>
+#ifdef USE_KPSE
+ #include <kpathsea/kpathsea.h>
+#endif
+#include "bool.h"
+#include "vowel.h"
+#include "unicode.h"
+#include "messages.h"
+
+typedef struct character_set {
+ grewchar *table;
+ struct character_set **next;
+ grewchar mask;
+ unsigned int bins;
+ unsigned int size;
+ bool is_final;
+} character_set;
+
+static character_set *character_set_new(const bool alloc_next)
+{
+ character_set *set = (character_set *)calloc(1, sizeof(character_set));
+ set->mask = 0x0f;
+ set->bins = 16;
+ set->size = 0;
+ set->table = (grewchar *)calloc(set->bins, sizeof(grewchar));
+ if (!set->table) {
+ gregorio_message(_("unable to allocate memory"),
+ "character_set_new", VERBOSITY_FATAL, 0);
+ }
+ if (alloc_next) {
+ set->next = (character_set **)calloc(set->bins, sizeof(character_set *));
+ if (!set->next) {
+ gregorio_message(_("unable to allocate memory"),
+ "character_set_new", VERBOSITY_FATAL, 0);
+ }
+ }
+ return set;
+}
+
+static void character_set_free(character_set *const set);
+
+static __inline void character_set_next_elements_free(character_set *const set)
+{
+ unsigned int i;
+ assert(set && set->next);
+ for (i = 0; i < set->bins; ++i) {
+ if (set->next[i]) {
+ character_set_free(set->next[i]);
+ }
+ }
+}
+
+static void character_set_free(character_set *const set)
+{
+ if (set) {
+ if (set->next) {
+ character_set_next_elements_free(set);
+ free(set->next);
+ }
+ free(set->table);
+ free(set);
+ }
+}
+
+static bool character_set_contains(character_set *const set,
+ const grewchar vowel, character_set **const next)
+{
+ unsigned int index;
+ assert(set);
+
+ if (next) {
+ *next = NULL;
+ }
+ for (index = ((unsigned long)vowel) & set->mask; set->table[index];
+ index = (index + 1) & set->mask) {
+ if (set->table[index] == vowel) {
+ if (next && set->next) {
+ *next = set->next[index];
+ }
+ return true;
+ }
+ }
+ return false;
+}
+
+static __inline void character_set_put(character_set *const set,
+ const grewchar vowel, character_set *next)
+{
+ unsigned int index;
+
+ assert(set);
+
+ index = ((unsigned long)vowel) & set->mask;
+ while (set->table[index]) {
+ index = (index + 1) & set->mask;
+ }
+
+ set->table[index] = vowel;
+ if (set->next) {
+ set->next[index] = next;
+ }
+}
+
+static __inline void character_set_grow(character_set *const set) {
+ static grewchar *old_table;
+ static character_set **old_next;
+ unsigned int old_bins, i;
+
+ assert(set);
+
+ if (set->bins >= 0x4000L) {
+ gregorio_message(_("character set too large"), "character_set_grow",
+ VERBOSITY_FATAL, 0);
+ return;
+ }
+
+ old_table = set->table;
+ old_next = set->next;
+ old_bins = set->bins;
+
+ set->bins <<= 1;
+ set->mask = (set->mask << 1) | 0x01;
+ set->table = calloc(set->bins, sizeof(grewchar));
+ if (old_next) {
+ set->table = calloc(set->bins, sizeof(character_set *));
+ }
+ for (i = 0; i < old_bins; ++i) {
+ if (old_table[i]) {
+ character_set_put(set, old_table[i], old_next ? old_next[i] : NULL);
+ } else {
+ assert(!old_next || !old_next[i]);
+ }
+ }
+
+ free(old_table);
+ if (old_next) {
+ free(old_next);
+ }
+}
+
+static character_set *character_set_add(character_set *const set,
+ const grewchar vowel)
+{
+ character_set *next = NULL;
+
+ if (!character_set_contains(set, vowel, &next)) {
+ if (((++(set->size) * 10) / set->bins) >= 7) {
+ character_set_grow(set);
+ }
+
+ if (set->next) {
+ next = character_set_new(true);
+ }
+
+ character_set_put(set, vowel, next);
+ }
+
+ return next;
+}
+
+static __inline void character_set_clear(character_set *const set)
+{
+ if (set) {
+ memset(set->table, 0, set->bins * sizeof(grewchar));
+
+ if (set->next) {
+ character_set_next_elements_free(set);
+ memset(set->next, 0, set->bins * sizeof(character_set *));
+ }
+
+ set->size = 0;
+ }
+}
+
+static character_set *vowel_table = NULL;
+static character_set *prefix_table = NULL;
+static character_set *suffix_table = NULL;
+static character_set *secondary_table = NULL;
+static grewchar *prefix_buffer = NULL;
+static size_t prefix_buffer_size;
+static size_t prefix_buffer_mask;
+
+extern FILE *gregorio_vowel_rulefile_in;
+
+static void prefix_buffer_grow(size_t required_size)
+{
+ grewchar *newbuffer;
+
+ while (required_size > prefix_buffer_size) {
+ prefix_buffer_size <<= 1;
+ prefix_buffer_mask = (prefix_buffer_mask << 1) | 0x01;
+ }
+ newbuffer = realloc(prefix_buffer, prefix_buffer_size * sizeof(grewchar));
+ if (newbuffer) {
+ prefix_buffer = newbuffer;
+ } else {
+ gregorio_message(_("unable to allocate memory"), "prefix_buffer_grow",
+ VERBOSITY_FATAL, 0);
+ }
+}
+
+void gregorio_vowel_tables_init(void)
+{
+ if (vowel_table) {
+ character_set_clear(vowel_table);
+ character_set_clear(prefix_table);
+ character_set_clear(suffix_table);
+ character_set_clear(secondary_table);
+ } else {
+ vowel_table = character_set_new(false);
+ prefix_table = character_set_new(true);
+ suffix_table = character_set_new(true);
+ secondary_table = character_set_new(true);
+
+ prefix_buffer_size = 16;
+ prefix_buffer_mask = 0x0f;
+ prefix_buffer = (grewchar *)malloc(
+ prefix_buffer_size * sizeof(grewchar));
+ if (!prefix_buffer) {
+ gregorio_message(_("unable to allocate memory"),
+ "gregorio_vowel_tables_init", VERBOSITY_FATAL, 0);
+ }
+ }
+}
+
+void gregorio_vowel_tables_load(const char *const filename,
+ char **const language, rulefile_parse_status *status)
+{
+#ifdef USE_KPSE
+ if (!kpse_in_name_ok(filename)) {
+ gregorio_messagef("gregorio_vowel_tables_load", VERBOSITY_WARNING, 0,
+ _("kpse disallows read from %s"), filename);
+ return;
+ }
+#endif
+ gregorio_vowel_rulefile_in = fopen(filename, "r");
+ if (gregorio_vowel_rulefile_in) {
+ gregorio_vowel_rulefile_parse(filename, language, status);
+ fclose(gregorio_vowel_rulefile_in);
+ gregorio_vowel_rulefile_in = NULL;
+ } else {
+ gregorio_messagef("gregorio_vowel_tables_load", VERBOSITY_WARNING, 0,
+ _("unable to open %s: %s"), filename, strerror(errno));
+ }
+}
+
+void gregorio_vowel_tables_free(void)
+{
+ if (vowel_table) {
+ character_set_free(vowel_table);
+ }
+ if (prefix_table) {
+ character_set_free(prefix_table);
+ }
+ if (suffix_table) {
+ character_set_free(suffix_table);
+ }
+ if (secondary_table) {
+ character_set_free(secondary_table);
+ }
+ if (prefix_buffer) {
+ free(prefix_buffer);
+ }
+}
+
+void gregorio_vowel_table_add(const char *vowels)
+{
+ if (vowels) {
+ grewchar *str = gregorio_build_grewchar_string_from_buf(vowels), *p;
+ for (p = str; *p; ++p) {
+ character_set_add(vowel_table, *p);
+ }
+ free(str);
+ }
+}
+
+void gregorio_prefix_table_add(const char *prefix)
+{
+ character_set *set = prefix_table;
+ grewchar *str, *p;
+
+ /* store prefixes backwards */
+ if (prefix && *prefix) {
+ str = gregorio_build_grewchar_string_from_buf(prefix);
+ p = str;
+
+ while (*(++p)) ;
+
+ while (p > str) {
+ set = character_set_add(set, *(--p));
+ }
+
+ set->is_final = true;
+ prefix_buffer_grow(gregorio_wcstrlen(str));
+ free(str);
+ }
+}
+
+void gregorio_suffix_table_add(const char *suffix)
+{
+ character_set *set = suffix_table;
+ grewchar *str, *p;
+
+ if (suffix && *suffix) {
+ str = gregorio_build_grewchar_string_from_buf(suffix);
+ p = str;
+
+ while (*p) {
+ set = character_set_add(set, *(p++));
+ }
+
+ set->is_final = true;
+ free(str);
+ }
+}
+
+void gregorio_secondary_table_add(const char *secondary)
+{
+ character_set *set = secondary_table;
+ grewchar *str, *p;
+
+ if (secondary && *secondary) {
+ str = gregorio_build_grewchar_string_from_buf(secondary);
+ p = str;
+
+ while (*p) {
+ set = character_set_add(set, *(p++));
+ }
+
+ set->is_final = true;
+ free(str);
+ }
+}
+
+typedef enum {
+ VWL_BEFORE = 0,
+ VWL_WITHIN,
+ VWL_SUFFIX
+} vowel_group_state;
+
+static __inline bool is_in_prefix(size_t bufpos) {
+ character_set *previous = prefix_table, *prefix;
+
+ while (character_set_contains(previous, prefix_buffer[bufpos], &prefix)) {
+ bufpos = (bufpos + prefix_buffer_size - 1) & prefix_buffer_mask;
+ previous = prefix;
+ }
+
+ return previous->is_final;
+}
+
+bool gregorio_find_vowel_group(const grewchar *const string, int *const start,
+ int *const end)
+{
+ size_t bufpos = 0;
+ vowel_group_state state = VWL_BEFORE;
+ character_set *cset = NULL;
+ const grewchar *subject;
+ int i;
+
+ /* stick the 0 in here to avoid overruns from is_in_prefix */
+ prefix_buffer[0] = 0;
+
+ for (i = 0, subject = string; true; ++i, ++subject) {
+ switch (state) {
+ case VWL_BEFORE:
+ bufpos = (bufpos + 1) & prefix_buffer_mask;
+ prefix_buffer[bufpos] = *subject;
+ if (character_set_contains(vowel_table, *subject, NULL)) {
+ /* we found a vowel */
+ if (!character_set_contains(vowel_table, *(subject + 1), NULL)
+ || !is_in_prefix(bufpos)) {
+ /* no vowel after or not in prefix, so this is the start */
+ *start = i;
+ state = VWL_WITHIN;
+ }
+ }
+ break;
+
+ case VWL_WITHIN:
+ if (!character_set_contains(vowel_table, *subject, NULL)) {
+ /* not a vowel; is it a suffix? */
+ *end = i;
+ if (character_set_contains(suffix_table, *subject, &cset)) {
+ /* it's the start of a suffix */
+ state = VWL_SUFFIX;
+ } else {
+ /* neither a vowel nor a suffix, so this is the end */
+ return true;
+ }
+ }
+ break;
+
+ case VWL_SUFFIX:
+ if (cset->is_final) {
+ /* remember the last final position */
+ *end = i;
+ }
+ if (!character_set_contains(cset, *subject, &cset)) {
+ /* no longer in valid suffix */
+ return true;
+ }
+ break;
+
+ default:
+ assert(false);
+ }
+
+ if (!*subject) {
+ break;
+ }
+ }
+
+ /* no vowel found; look for a secondary */
+ *end = -1;
+ for (*start = 0; *(subject = string + *start); ++ *start) {
+ for (cset = secondary_table, i = *start;
+ character_set_contains(cset, *subject, &cset); ++i, ++subject) {
+ if (cset->is_final) {
+ /* remember the last final position */
+ *end = i + 1;
+ }
+ }
+ if (*end >= 0) {
+ return true;
+ }
+ }
+
+ /* no center found */
+ *start = -1;
+ return false;
+}
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.h b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.h
new file mode 100644
index 00000000000..61e96bb0bb7
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/src/vowel/vowel.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2015 The Gregorio Project (see CONTRIBUTORS.md)
+ *
+ * This file is part of Gregorio.
+ *
+ * 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/>.
+ */
+
+#ifndef _VOWEL_H
+#define _VOWEL_H
+
+#include <stdio.h>
+#include "bool.h"
+#include "unicode.h"
+
+typedef enum rulefile_parse_status {
+ RFPS_NOT_FOUND = 0,
+ RFPS_FOUND,
+ RFPS_ALIASED
+} rulefile_parse_status;
+
+int gregorio_vowel_rulefile_parse(const char *filename, char **language,
+ rulefile_parse_status *status);
+int gregorio_vowel_rulefile_lex_destroy(void);
+void gregorio_vowel_tables_init(void);
+void gregorio_vowel_tables_load(const char *filename, char **language,
+ rulefile_parse_status *status);
+void gregorio_vowel_tables_free(void);
+void gregorio_vowel_table_add(const char *vowels);
+void gregorio_prefix_table_add(const char *prefix);
+void gregorio_suffix_table_add(const char *suffix);
+void gregorio_secondary_table_add(const char *secondary);
+bool gregorio_find_vowel_group(const grewchar *subject, int *start, int *end);
+
+#endif
diff --git a/Build/source/texk/gregorio/gregorio-4.0.0-beta2/windows/gregorio-resources.rc b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/windows/gregorio-resources.rc
new file mode 100644
index 00000000000..7b275651bbb
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio-4.0.0-beta2/windows/gregorio-resources.rc
@@ -0,0 +1,25 @@
+IDI_ICON1 ICON DISCARDABLE "gregorio.ico"
+1 VERSIONINFO
+FILEVERSION 1,0,0,0
+PRODUCTVERSION 1,0,0,0
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ BEGIN
+ VALUE "CompanyName", "Gregorio project"
+ VALUE "FileDescription", "Gregorio"
+ VALUE "FileVersion", "4.0.0-beta2"
+ VALUE "InternalName", "gregorio"
+ VALUE "LegalCopyright", "See COPYING in the installation directory."
+ VALUE "OriginalFilename", "gregorio.exe"
+ VALUE "ProductName", "Gregorio"
+ VALUE "ProductVersion", "4.0.0-beta2"
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+ END
+END
diff --git a/Build/source/texk/gregorio/gregorio.test b/Build/source/texk/gregorio/gregorio.test
new file mode 100755
index 00000000000..676a3e14450
--- /dev/null
+++ b/Build/source/texk/gregorio/gregorio.test
@@ -0,0 +1,38 @@
+#! /bin/sh
+
+# Copyright (C) 2015 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+TEXMFCNF=$srcdir/../kpathsea
+
+export TEXMFCNF
+
+DOCSRC=$srcdir/$GREGORIO_TREE/doc
+
+failed=
+
+echo "*** gregorio --version" \
+ && ./gregorio --version \
+ && echo && echo "gregorio-version tests OK" && echo \
+ || failed="$failed gregorio-version"
+
+echo "*** gregorio --help" \
+ && ./gregorio --help \
+ && echo && echo "gregorio-help tests OK" && echo \
+ || failed="$failed gregorio-help"
+
+echo "*** gregorio -o factus.gtex factus.gabc" \
+ && ./gregorio -o factus.gtex $DOCSRC/factus.gabc \
+ && echo && echo "gregorio-factus tests OK" && echo \
+ || failed="$failed gregorio-factus"
+
+echo "*** gregorio -o veni.gtex veni.gabc" \
+ && ./gregorio -o veni.gtex $DOCSRC/veni.gabc \
+ && echo && echo "gregorio-veni tests OK" && echo \
+ || failed="$failed gregorio-veni"
+
+test -z "$failed" && exit 0
+echo
+echo "failed tests:$failed"
+exit 1
+
diff --git a/Build/source/texk/gregorio/version.ac b/Build/source/texk/gregorio/version.ac
new file mode 100644
index 00000000000..714a197a50a
--- /dev/null
+++ b/Build/source/texk/gregorio/version.ac
@@ -0,0 +1,11 @@
+dnl
+dnl Copyright 2015 Peter Breitenlohner <tex-live@tug.org>
+dnl
+dnl This file is free software; the copyright holder
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl --------------------------------------------------------
+dnl
+dnl m4-include this file to define the current gregorio version
+m4_define([gregorio_version], [4.0.0-beta2])
diff --git a/Build/source/utils/Makefile.in b/Build/source/utils/Makefile.in
index 398fec56b0d..87060264520 100644
--- a/Build/source/utils/Makefile.in
+++ b/Build/source/utils/Makefile.in
@@ -152,6 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-cairo-flags.m4 \
$(top_srcdir)/../texk/dvisvgm/ac/withenable.ac \
$(top_srcdir)/../texk/dvisvgm/ac/dvisvgm.ac \
$(top_srcdir)/../texk/dvisvgm/ac/libgs.ac \
+ $(top_srcdir)/../texk/gregorio/ac/withenable.ac \
$(top_srcdir)/../texk/gsftopk/ac/withenable.ac \
$(top_srcdir)/../texk/lcdf-typetools/ac/withenable.ac \
$(top_srcdir)/../texk/lcdf-typetools/ac/lcdf-typetools.ac \
diff --git a/Build/source/utils/configure b/Build/source/utils/configure
index f7297afc9df..783f5754ff9 100755
--- a/Build/source/utils/configure
+++ b/Build/source/utils/configure
@@ -778,6 +778,7 @@ with_libgs
with_system_libgs
with_libgs_includes
with_libgs_libdir
+enable_gregorio
enable_gsftopk
enable_lcdf_typetools
enable_cfftot1
@@ -1570,6 +1571,7 @@ Optional Features:
--disable-dvipos do not build the dvipos package
--disable-dvipsk do not build the dvipsk package
--disable-dvisvgm do not build the dvisvgm package
+ --disable-gregorio do not build the gregorio package
--disable-gsftopk do not build the gsftopk package
--disable-lcdf-typetools
do not build the lcdf-typetools package
@@ -4445,6 +4447,28 @@ if test "x$enable_native_texlive_build:$with_system_libgs" = xyes:yes; then
as_fn_error $? "you can not use system libraries for a native TeX Live build" "$LINENO" 5
fi
+## texk/gregorio/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gregorio/
+## configure options and TL libraries required for gregorio
+# Check whether --enable-gregorio was given.
+if test "${enable_gregorio+set}" = set; then :
+ enableval=$enable_gregorio;
+fi
+case $enable_gregorio in #(
+ yes|no) :
+ ;; #(
+ *) :
+
+ enable_gregorio=$enable_all_pkgs
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-gregorio=$enable_gregorio'" >&5
+$as_echo "$as_me: Assuming \`--enable-gregorio=$enable_gregorio'" >&6;}
+ ac_configure_args="$ac_configure_args '--enable-gregorio=$enable_gregorio'"
+ ;;
+esac
+
+test "x$enable_gregorio" = xno || {
+ need_kpathsea=yes
+}
+
## texk/gsftopk/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory texk/gsftopk/
## configure options and TL libraries required for gsftopk
# Check whether --enable-gsftopk was given.