From: Doug Torrance Date: Sun, 24 Jan 2021 13:57:47 +0000 (+0000) Subject: macaulay2 (1.17.1+ds-2) unstable; urgency=medium X-Git-Tag: archive/raspbian/1.19.1+ds-9+rpi1~1^2^2~11 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=014e5fbe59670e22e02bbe18f4fdff0f62824ea3;p=macaulay2.git macaulay2 (1.17.1+ds-2) unstable; urgency=medium * debian/patches/dont-capture-check-core-32-bit.patch - New patch; don't use capture when running Core and Cremona tests on 32-bit architectures. Otherwise, we run out of memory. * debian/patches/dont-capture-diffalg-tests.patch - New patch; don't use "capture" for DiffAlg package tests. * debian/patches/skip-failing-package-tests.patch - Add core-tests.m2; contains a test with an alarm that isn't caught when running "check". - Skip another segfaulting MinimalPrimes test. * debian/patches/smaller-points-examples.patch - New patch; Remove examples showing less efficient algorithms from Points docs. * debian/patches/use-canned-examples.patch - Add example from TestIdeals package that has been known to segfault. * debian/rules - Exclude .m2 files from being gzipped by dh_compress. Otherwise, package tests may be compressed and won't be found by "check". - Only set VERBOSE variable if DEB_BUILD_OPTIONS doesn't include "terse". [dgit import unpatched macaulay2 1.17.1+ds-2] --- 014e5fbe59670e22e02bbe18f4fdff0f62824ea3 diff --cc debian/.gitlab-ci.yml index 0000000,0000000..0dbb7ac new file mode 100644 --- /dev/null +++ b/debian/.gitlab-ci.yml @@@ -1,0 -1,0 +1,6 @@@ ++include: ++ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml ++ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml ++ ++variables: ++ SALSA_CI_GBP_BUILDPACKAGE_ARGS: --git-hooks diff --cc debian/README.Debian index 0000000,0000000..b6a5233 new file mode 100644 --- /dev/null +++ b/debian/README.Debian @@@ -1,0 -1,0 +1,68 @@@ ++Macaulay2 for Debian ++==================== ++ ++Javascript libraries ++-------------------- ++Macaulay2 uses a number of Javascript libraries. In particular, they ++are used to render mathematical expressions in the browser-based ++documentation and to visualize various mathematical objects by the ++Visualize package. ++ ++Upstream embeds these libraries in the source code, often minimized. ++This is not desirable for the Debian package. For the libraries that ++are already available in Debian, we repack the tarball (using ++Files-Excluded in debian/copyright) without the embedded copies and ++use dh_linktree to create symbolic links to the Debian versions. ++ ++There are three libraries that are not yet available in Debian, and so ++the embedded copies remain. In particular: ++ ++* BootSideMenu (ITP #960097). Macaulay2 ships the full source code. ++ ++* noUiSlider (ITP #960618). Macaulay2 ships minified source, so we ++ include the full source code in debian/missing-sources, obtained ++ from https://github.com/leongersen/noUiSlider/tree/8.5.1. ++ ++* The render-a11y-string KaTeX extension. It was added in KaTeX ++ version 0.11.0, but only 0.10.2 is currently available in Debian. ++ Macaulay2 ships minified source, so we include the full source code ++ in debian/missing-sources, obtained from ++ https://github.com/KaTeX/KaTeX/tree/v0.12.0. ++ ++dwww ++---- ++The Macaulay2 documentation is registered with doc-base. In order to ++view the html documentation properly in your web browser using dwww, ++you must append "/usr/share/Macaulay2" to DWWW_DOCPATH in ++/etc/dwww/dwww.conf. Otherwise, some resources (e.g., CSS and ++Javascript files) will be unavailable. ++ ++Suggested packages ++------------------ ++Quite a few additional Debian packages will be installed alongside ++Macaulay2 automatically due to being listed in "Depends" or ++"Recommended", but there are a number of others that are listed under ++"Suggests" that will not be installed unless you pass ++"--install-suggests" to apt or install them separately. They are: ++ ++* dot2tex - Used by showTikZ function in Graphs package. ++ ++* fig2dev - Used by gfanRender and gfanRenderStaircase functions in ++ gfanInterface package. ++ ++* graphviz - Used by displayGraph function in Graphs package. ++ ++* imagemagick - Used by displayGraph function in Graphs package. ++ However, any image viewer will do -- set the "JpgViewer" configuration ++ option when loading the package to change the viewer. ++ ++* pdf-viewer (virtual package) - Used by displayPoset function in ++ Posets package. The default pdf viewer is called using xdg-open; ++ use xdg-mime to change it. Alternatively, set the "DefaultPDFViewer" ++ configuration option when loading the package. ++ ++* polymake - Used by Polymake, StatePolytope, and Tropical packages. ++ ++* sdpa - Used by SemidefiniteProgramming package. ++ ++ -- Doug Torrance , Fri, 1 Jan 2021 17:17:56 -0500 diff --cc debian/changelog index 0000000,0000000..290db5f new file mode 100644 --- /dev/null +++ b/debian/changelog @@@ -1,0 -1,0 +1,210 @@@ ++macaulay2 (1.17.1+ds-2) unstable; urgency=medium ++ ++ * debian/patches/dont-capture-check-core-32-bit.patch ++ - New patch; don't use capture when running Core and Cremona tests ++ on 32-bit architectures. Otherwise, we run out of memory. ++ * debian/patches/dont-capture-diffalg-tests.patch ++ - New patch; don't use "capture" for DiffAlg package tests. ++ * debian/patches/skip-failing-package-tests.patch ++ - Add core-tests.m2; contains a test with an alarm that isn't ++ caught when running "check". ++ - Skip another segfaulting MinimalPrimes test. ++ * debian/patches/smaller-points-examples.patch ++ - New patch; Remove examples showing less efficient algorithms ++ from Points docs. ++ * debian/patches/use-canned-examples.patch ++ - Add example from TestIdeals package that has been known to ++ segfault. ++ * debian/rules ++ - Exclude .m2 files from being gzipped by dh_compress. Otherwise, ++ package tests may be compressed and won't be found by "check". ++ - Only set VERBOSE variable if DEB_BUILD_OPTIONS doesn't include ++ "terse". ++ ++ -- Doug Torrance Sun, 24 Jan 2021 08:57:47 -0500 ++ ++macaulay2 (1.17.1+ds-1) unstable; urgency=medium ++ ++ * New upstream release. ++ * debian/clean ++ - Add autogenerated file debian/macaulay2-pkg.el. ++ * debian/control ++ - Add packages to Recommends. ++ + info: info is used by "infoHelp" function. ++ + texlive-latex-base: latex is used by "showTex" function. ++ + xdg-utils: xdg-open is used by "show" function. ++ + xterm: xterm is used by "edit" function. ++ - Add packages to Suggests. ++ + fig2dev: Used by gfanInterface package. ++ + dot2tex/graphviz/imagemagick: Used by Graphs package. ++ + pdf-viewer: Used by Posets package. ++ - Switch from node-jquery to libjs-jquery (versioned, to ensure ++ that the minified jQuery source is not a symbolic link) in ++ Build-Depends-Indep. ++ * debian/copyright ++ - Various updates for new release. ++ * debian/elpa-macaulay2.{docs,elpa} ++ - Update paths to Emacs-related files files. ++ * debian/macaulay2-common.linktrees ++ - Update path the minified jQuery source needed by Visualize package. ++ Previously, it was shipped in the node-jquery package, but was ++ moved to libjs-jquery in version 3.5.1+dfsg+~3.5.5-4. ++ * debian/patches ++ - Refresh for new release. ++ - Previous skip-*-{example,test}.patch's have been combined into ++ three patches for simplicity: ++ + used-canned-examples.patch: Canned versions of examples that ++ have been known to fail. ++ + skip-failing-core-tests.patch: Tests in M2/Macaulay2/tests that ++ have been known to fail. ++ + skip-package-tests.patch: Package tests that have been known ++ to fail. We also use the new "-* no-check-flag *-" feature ++ to skip these tests rather than patching them out entirely. ++ * debian/patches/git-description.patch ++ - New patch; provide version#"git description". ++ * debian/patches/use-debian-applications.patch ++ - New patch; tell gfanInterface package where to find fig2dev and ++ Posets package to use xdg-open to view pdf files. ++ * debian/patches/use-dh-elpa.patch ++ - New patch; modifications to work with dh_elpa. ++ * debian/README.Debian ++ - Remove section on orig tarballs; they are no longer generated on ++ Salsa. ++ - Add section discussing packages listed in Suggests. ++ * debian/rules ++ - Add execute_after_dh_install-arch target to remove empty directory. ++ - Simplify debian/macaulay2-pkg.el rule. ++ - Add get-orig-source target. ++ * debian/scripts/copyright-helper.m2 ++ - Move file into new debian/scripts directory. ++ * debian/scripts/m2-get-orig-source.sh ++ - New script to generate orig tarballs. ++ * debian/scripts/m2-tarball-warning.sh ++ - New script to display a warning if using uscan to generate a ++ tarball. ++ * debian/tests/control ++ - Add messages before each stage of testing. ++ - Add "M2 --check 2" for testing Core package. ++ * debian/watch ++ - Upstream has begun tagging stable releases, so we switch to ++ GitHub for the link. However, uscan should only be used ++ to check for new releases, as the tarballs it generates will ++ be missing the files from the M2-emacs submodule. ++ ++ -- Doug Torrance Sat, 16 Jan 2021 18:14:58 -0500 ++ ++macaulay2 (1.16.99+git40.3a512e5+ds-1~exp1) experimental; urgency=medium ++ ++ * New upstream beta release. ++ * debian/control ++ - Add packages to Build-Depends. ++ + dh-linktree: We now use this debhelper addon to create symbolic ++ links to Debian copies of GPL licenses and various Javascript ++ libraries instead of patching the files directly to point to ++ them. ++ + libboost-regex-dev: Replaces embedded copy of GNU regex library ++ used in previous releases. ++ + libboost-stacktrace-dev: Improves readability of stack traces. ++ - Add Build-Depends-Indep. ++ + jdupes: Moved from Build-Depends; only needed for building ++ documentation. ++ + Various fonts and Javascript libraries; needed during build ++ by dh_linktree. ++ + w3c-markup-validator: Used to validate html in documentation. ++ - Bump Standards-Version to 4.5.1. ++ - Remove Javascript libraries from Recommends. They will now be ++ pulled in by ${misc:Depends} thanks to dh_linktree. ++ - Add emacs to Recommends for elpa-macaulay2. ++ * debian/copyright ++ - Add KaTeX files to Files-Excluded. ++ - Add paragraph for KaTeX files. ++ - Remove paragraph for embedded GNU regex library. ++ - Add licensing information for new packages added since previous ++ release. ++ * debian/copyright-helper.m2 ++ - New Macaulay2 script to help generate debian/copyright paragraphs ++ for new packages. ++ * debian/macaulay2-common.linktrees ++ - New file; tell dh_linktree where Debian copies of GPL licenses ++ and Javascript libraries are located. ++ * debian/macaulay2-common.lintian-overrides ++ - Update package-contains-documentation-outside-usr-share-doc ++ overrides for files that have changed since previous release. ++ * debian/missing-source/render-a11y-string.js ++ - Add source for minified KaTeX file that isn't in Debian yet. ++ * debian/patches ++ - Remove patches applied (or otherwise made unnecessary) upstream. ++ + fix-*.patch ++ + hardening.patch ++ + remove-build-paths-from-cached-files.patch ++ + remove-build-paths-from-docs.patch (Patch remains, but only ++ increases the default print width of examples.) ++ + use-debian-{4ti2,cohomcalg,csdp,gfan,nauty,normaliz,topcom}.patch ++ - Refresh remaining patches for new upstream version. ++ * debian/patches/skip-computations-book-test.patch ++ - Rename from fix-computations-book-test.patch; the behavior of the ++ test is too unpredictable between different architectures, so ++ we skip it entirely instead of trying to fix it. ++ * debian/patches/skip-*-{example,test}.patch ++ - Skip some additional examples and tests that have been known ++ to fail on various architectures. ++ * debian/patches/use-debian-{gpl,javascript}.patch ++ - Remove patches; we use dh_linktree for the same purpose instead. ++ * debian/README.Debian ++ - Add information about KaTeX to "Javascript libraries" section. ++ - Add section on using dwww to view the Macaulay2 documentation. ++ * debian/rules ++ - Use dh_linktree addon. ++ - New execute_before_dh_auto_build target; touch KaTeX files to ++ prevent html-check-links test from failing. ++ - Drop check for "nocheck" in DEB_BUILD_OPTIONS from ++ override_dh_auto_test rule; not necessary in debhelper 13. ++ We also append "-arch" to this target. ++ - New override_dh_auto_test-indep rule to validate html docs. ++ - Switch override_dh_link target that calls jdupes to ++ execute_before_dh_link-indep target. ++ - Switch override_dh_elpa target that generates -pkg.el file ++ to execute_before_dh_elpa target. ++ * debian/tests/check.m2 ++ - Remove file; no longer needed. ++ * debian/tests/control ++ - Use upstream's updated --check command line argument to run ++ continuous integration tests. ++ * debian/upstream/metadata ++ - Add recent NSF grants to Funding. ++ - Add new Macaulay2Web interface to Webservice. ++ ++ -- Doug Torrance Sat, 26 Dec 2020 00:29:42 -0500 ++ ++macaulay2 (1.16+git55.94c4b7d+ds-2) unstable; urgency=medium ++ ++ * Upload to unstable. ++ ++ -- Doug Torrance Wed, 04 Nov 2020 20:54:18 -0500 ++ ++macaulay2 (1.16+git55.94c4b7d+ds-2~exp1) experimental; urgency=medium ++ ++ * Source-only upload for migration to testing. ++ * debian/control ++ - Add libmps-dev to Build-Depends. ++ - Add lsb-release to Build-Depends so configure can detect the ++ Debian release. ++ - Fix URL in VCS-* fields. ++ * debian/elpa-test ++ - Disable dh_elpa_test so it doesn't override dh_auto_test. ++ * debian/patches/skip-mpsolve-for-now.patch ++ - Remove patch; mpsolve is now in Debian. ++ * debian/patches/{fix,skip}-*-{example,test}.patch: ++ - New patches; fix or skip examples or tests causing build ++ failures on various architectures. ++ * debian/README.Debian ++ - Remove section on 'roots' function. It is now available since ++ mpsolve is in Debian. ++ ++ -- Doug Torrance Wed, 04 Nov 2020 20:54:18 -0500 ++ ++macaulay2 (1.16+git55.94c4b7d+ds-1) unstable; urgency=low ++ ++ * Initial release (Closes: #439888). ++ ++ -- Doug Torrance Sun, 04 Oct 2020 16:31:20 -0400 diff --cc debian/clean index 0000000,0000000..5e20d65 new file mode 100644 --- /dev/null +++ b/debian/clean @@@ -1,0 -1,0 +1,2 @@@ ++debian/macaulay2-pkg.el ++M2/usr-host/lib/libmissing.a diff --cc debian/control index 0000000,0000000..80118aa new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,0 +1,122 @@@ ++Source: macaulay2 ++Section: math ++Priority: optional ++Maintainer: Debian Science Maintainers ++Uploaders: Doug Torrance ++Build-Depends: 4ti2, ++ bison, ++ cohomcalg, ++ coinor-csdp, ++ debhelper-compat (= 13), ++ dh-elpa, ++ dh-linktree, ++ fflas-ffpack, ++ flex, ++ gfan, ++ install-info, ++ libatomic-ops-dev, ++ libboost-dev, ++ libboost-regex-dev, ++ libboost-stacktrace-dev, ++ libcdd-dev, ++ libeigen3-dev, ++ libflint-dev (>= 2.6.0~), ++ libfrobby-dev, ++ libgc-dev, ++ libgdbm-dev, ++ libgivaro-dev, ++ libglpk-dev, ++ libgtest-dev, ++ liblapack-dev, ++ liblzma-dev, ++ libmathic-dev, ++ libmathicgb-dev, ++ libmemtailor-dev, ++ libmpfr-dev, ++ libmps-dev, ++ libntl-dev, ++ libreadline-dev, ++ libsingular-dev, ++ libxml2-dev, ++ lrslib, ++ lsb-release, ++ nauty, ++ normaliz, ++ pkg-config, ++ singular-data, ++ time, ++ topcom ++Build-Depends-Indep: fonts-glyphicons-halflings, ++ fonts-katex, ++ jdupes, ++ libjs-bootstrap, ++ libjs-d3, ++ libjs-jquery (>= 3.5.1+dfsg+~3.5.5-4), ++ libjs-katex, ++ libjs-three, ++ libjs-underscore, ++ node-clipboard, ++ w3c-markup-validator ++Standards-Version: 4.5.1 ++Homepage: http://macaulay2.com ++Vcs-Browser: https://salsa.debian.org/science-team/macaulay2 ++Vcs-Git: https://salsa.debian.org/science-team/macaulay2.git ++Rules-Requires-Root: no ++ ++Package: macaulay2 ++Architecture: any ++Depends: macaulay2-common (= ${source:Version}), ++ singular-data, ++ ${misc:Depends}, ++ ${shlibs:Depends} ++Recommends: 4ti2, ++ cohomcalg, ++ coinor-csdp, ++ elpa-macaulay2 (= ${source:Version}), ++ gfan, ++ info, ++ lrslib, ++ nauty, ++ normaliz, ++ texlive-latex-base, ++ topcom, ++ www-browser, ++ xdg-utils, ++ xterm ++Suggests: dot2tex, fig2dev, graphviz, imagemagick, pdf-viewer, polymake, sdpa ++Description: Software system for algebraic geometry research ++ Macaulay 2 is a software system for algebraic geometry research, written by ++ Daniel R. Grayson and Michael E. Stillman. Based on Groebner bases, it ++ provides algorithms for computing homological invariants of rings and ++ modules. ++ . ++ This package contains the architecture dependent portion of Macaulay2. ++ ++Package: macaulay2-common ++Architecture: all ++Multi-Arch: foreign ++Depends: ${misc:Depends} ++Description: Software system for algebraic geometry research (common files) ++ Macaulay 2 is a software system for algebraic geometry research, written by ++ Daniel R. Grayson and Michael E. Stillman. Based on Groebner bases, it ++ provides algorithms for computing homological invariants of rings and ++ modules. ++ . ++ This package contains the architecture independent portion of Macaulay2, and is ++ normally installed automatically when one of the architecture dependent ++ packages is installed. ++ ++Package: elpa-macaulay2 ++Architecture: all ++Multi-Arch: foreign ++Section: editors ++Depends: ${elpa:Depends}, ${misc:Depends} ++Recommends: emacs ++Description: Software system for algebraic geometry research (Emacs package) ++ Macaulay 2 is a software system for algebraic geometry research, written by ++ Daniel R. Grayson and Michael E. Stillman. Based on Groebner bases, it ++ provides algorithms for computing homological invariants of rings and ++ modules. ++ . ++ This package contains the modes for running Macaulay2 within Emacs and ++ editing Macaulay2 code. diff --cc debian/copyright index 0000000,0000000..241d282 new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -1,0 -1,0 +1,2184 @@@ ++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ ++Upstream-Name: Macaulay2 ++Source: http://macaulay2.com ++Files-Excluded: M2/Macaulay2/packages/Style/katex/contrib/auto-render.min.js ++ M2/Macaulay2/packages/Style/katex/contrib/copy-tex.min.* ++ M2/Macaulay2/packages/Style/katex/fonts ++ M2/Macaulay2/packages/Style/katex/katex.min.* ++ M2/Macaulay2/packages/Style/katex/LICENSE ++ M2/Macaulay2/packages/Visualize/css/bootstrap*.min.css ++ M2/Macaulay2/packages/Visualize/fonts ++ M2/Macaulay2/packages/Visualize/js/bootstrap.min.js ++ M2/Macaulay2/packages/Visualize/js/clipboard.min.js ++ M2/Macaulay2/packages/Visualize/js/d3.v3.min.js ++ M2/Macaulay2/packages/Visualize/js/jquery-1.11.3.min.js ++ M2/Macaulay2/packages/Visualize/js/three.min.js ++ M2/Macaulay2/packages/Visualize/js/underscore.js ++Comment: Files-Excluded field removes embedded Javascript libraries. ++ . ++ An email from Dan Grayson dated 2020-08-03 clarified the ++ licenses of code contributed by authors other than himself and Mike ++ Stillman: ++ . ++ "A priori the author of a file is the copyright holder, by default. ++ We haven't always been alert about asking authors to put their code ++ in the public domain, although I have done that in a few ++ cases. . . My general attitude is that anyone who contributes code to ++ us is putting it in the public domain, implicitly." ++ ++Files: * ++Copyright: 1993-2019 Daniel R. Grayson ++ 1993-2020 Michael E. Stillman ++License: GPL-2+ ++ ++Files: debian/* ++Copyright: 2015-2020 Doug Torrance ++License: GPL-2+ ++ ++Files: debian/missing-sources/render-a11y-string.js ++ M2/Macaulay2/packages/Style/katex/contrib/render-a11y-string.min.js ++Copyright: 2013-2019 Khan Academy and other contributors ++Comment: https://github.com/KaTeX/KaTeX/blob/v0.12.0/LICENSE ++License: Expat ++ ++Files: M2/cmake/FindAtomicOps.cmake ++ M2/cmake/FindBDWGC.cmake ++ M2/cmake/FindFactory.cmake ++ M2/cmake/FindFlint.cmake ++ M2/cmake/FindFrobby.cmake ++ M2/cmake/FindGDBM.cmake ++ M2/cmake/FindMathic.cmake ++ M2/cmake/FindMathicgb.cmake ++ M2/cmake/FindMemtailor.cmake ++ M2/cmake/FindMPIR.cmake ++ M2/cmake/FindMPSolve.cmake ++ M2/cmake/FindNTL.cmake ++Copyright: 2020 Mahrud Sayrafi ++Comment: The files themselves only contain the line "Redistribution ++ and use is allowed according to the terms of the BSD license." In an ++ email, the author confirmed that the license in question is the ++ 3-clause version, which is the same license used by CMake itself. See ++ https://cmake.org/licensing/. This comment also applies to the other ++ Find*.cmake files below. ++License: BSD-3-Clause ++ ++Files: M2/cmake/FindCDDLIB.cmake ++Copyright: 2006 Laurent Montel ++ 2018 Thomas Baumgart ++ 2020 Mahrud Sayrafi ++License: BSD-3-Clause ++ ++Files: M2/cmake/FindGMP.cmake ++Copyright: 2016 Jack Poulson ++ 2020 Mahrud Sayrafi ++License: BSD-3-Clause ++ ++Files: M2/cmake/FindMPFR.cmake ++Copyright: 2006, 2007 Montel Laurent ++ 2008, 2009 Gael Guennebaud ++ 2010 Jitse Niesen ++ 2015 Jack Poulson ++ 2020 Mahrud Sayrafi ++License: BSD-3-Clause ++ ++Files: M2/cmake/FindTBB.cmake ++Copyright: 2012 Sergiu Dotenco ++License: Expat ++ ++Files: M2/config/ax_compare_version.m4 ++Copyright: 2008 Tim Toolan ++License: FSFAP ++ ++Files: M2/config/ax_func_accept_argtypes.m4 ++Copyright: 2008 Daniel Richard G. ++License: GPL-2+ with autoconf exception ++ ++Files: M2/config/ax_prog_cc_for_build.m4 ++Copyright: 2008 Paolo Bonzini ++License: FSFAP ++ ++Files: M2/config/gtest.m4 ++Copyright: 2012 Canonical, Ltd. ++License: Expat ++ ++Files: M2/distributions/cygwin/genini ++Copyright: 2005, 2006, 2007 Christopher Faylor ++License: GPL-2+ ++ ++Files: M2/Macaulay2/d/boost-regex.cpp ++ M2/Macaulay2/d/regex.dd ++ M2/Macaulay2/m2/markdown.m2 ++ M2/Macaulay2/m2/regex.m2 ++Copyright: 2020 Mahrud Sayrafi ++Comment: See Comment at top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/e/bibasis/* ++ M2/Macaulay2/packages/BIBasis.m2 ++Copyright: 2006-2011 Mikhail V. Zinin ++License: GPL-2+ ++ ++Files: M2/Macaulay2/e/franzi* ++Copyright: Franziska Hinkelmann ++License: public-domain ++ ++Files: M2/Macaulay2/e/localring.cpp ++ M2/Macaulay2/e/localring.hpp ++ M2/Macaulay2/e/mutablecomplex.cpp ++ M2/Macaulay2/e/mutablecomplex.hpp ++ M2/Macaulay2/m2/localring.m2 ++ M2/Macaulay2/packages/PruneComplex* ++Copyright: 2017 Mahrud Sayrafi ++ 2017 Mike Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/e/mpreal.h ++Copyright: 2008-2019 Pavel Holoborodko ++License: GPL-3+ ++ ++Files: M2/Macaulay2/e/mutablemat-imp.hpp ++ M2/Macaulay2/e/NAG.cpp ++ M2/Macaulay2/e/NAG.hpp ++ M2/Macaulay2/e/SLP.cpp ++ M2/Macaulay2/e/SLP.hpp ++ M2/Macaulay2/e/SLP-defs.hpp ++ M2/Macaulay2/e/SLP-imp.hpp ++Copyright: 2008, 2015 Anton Leykin and Mike Stillman ++Comment: Anton Leykin's code in this file is in the public domain. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/e/unit-tests/GivaroTest.cpp ++Copyright: 1994-2009 The Givaro group ++License: CECILL-B ++ ++Files: M2/Macaulay2/editors/vim/m2.vim.plugin ++Copyright: 2010 David Cook II ++License: public-domain ++ ++Files: M2/Macaulay2/m2/book.m2 ++Copyright: 1997 Daniel R. Grayson ++ 2020 Mahrud Sayrafi ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/m2/expressions.m2 ++Copyright: 1992-2002 Daniel R. Grayson ++ 2018 P. Zinn-Justin ++Comment: See M2/LICENSING-NOTES ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/m2/fano.m2 ++ M2/Macaulay2/tests/normal/testsubring.m2 ++Copyright: 1996, 1997 Michael Stillman and David Eisenbud ++License: GPL-2+ ++ ++Files: M2/Macaulay2/m2/hypertext.m2 ++Copyright: 1993-2003 Daniel R. Grayson ++ 2020 P. Zinn-Justin ++ 2020 Mahrud Sayrafi ++Comment: See M2/LICENSING-NOTES ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/PrimaryDecomposition* ++Copyright: 2020 Mike Stillman ++ 2020 Carolyn Yackel ++ 2020 Justin Chen ++ 2020 Mahrud Sayrafi ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/m2/minPres.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/minimalPresentation-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/trim-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/overviewB.m2 ++ M2/Macaulay2/packages/PrimaryDecomposition/primaryDecomposition-test.m2 ++Copyright: 2006 Amelia Taylor ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/m2/schubert.m2 ++Copyright: Bernd Sturmfels ++ Josephine Yu ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/m2/webapp.m2 ++ M2/Macaulay2/packages/VectorGraphics* ++Copyright: 2018-2020 Paul Zinn-Justin ++Comment: See M2/LICENSING-NOTES ++License: public-domain ++ ++Files: M2/Macaulay2/packages/AdjointIdeal* ++ M2/Macaulay2/packages/ConvexInterface* ++ M2/Macaulay2/packages/MapleInterface* ++ M2/Macaulay2/packages/Parametrization* ++ M2/Macaulay2/packages/SRdeformations.m2 ++Copyright: 2009 Janko Boehm ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/AlgebraicSplines.m2 ++Copyright: 2014-2015 Mike Dipasquale ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/AnalyzeSheafOnP1.m2 ++ M2/Macaulay2/packages/ChainComplexOperations.m2 ++ M2/Macaulay2/packages/CompleteIntersectionResolutions.m2 ++ M2/Macaulay2/packages/HigherCIOperators.m2 ++ M2/Macaulay2/packages/MCMApproximations.m2 ++Copyright: 2013, 2015, 2017, 2019 David Eisenbud ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/BeginningMacaulay2* ++ M2/Macaulay2/packages/EagonResolution.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/pushForward-doc.m2 ++ M2/Macaulay2/packages/MonomialOrbits.m2 ++ M2/Macaulay2/packages/Truncations.m2 ++ M2/Macaulay2/packages/undistributed-packages/RandomSearch.m2 ++Copyright: 2006, 2009, 2018, 2020 David Eisenbud ++ 2006, 2009, 2018, 2020 Mike Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Bertini* ++Copyright: 2020 Elizabeth Gross ++ 2020 Jose Israel Rodriguez ++ 2020 Dan Bates ++ 2020 Anton Leykin ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/BGG.m2 ++Copyright: 2016 Hirotachi Abo ++ 2016 Wolfram Decker ++ 2016 David Eisenbud ++ 2016 Frank Schreyer ++ 2016 Gregory G. Smith ++ 2016 Mike Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/BinomialEdgeIdeals.m2 ++Copyright: 2015 Tobias Windisch ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Binomials.m2 ++ M2/Macaulay2/packages/Cyclotomic.m2 ++Copyright: 2009-2014 Thomas Kahle ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/BoijSoederberg.m2 ++Copyright: 2015 David Eisenbud ++ 2015 Frank Schreyer ++ 2015 Mike Stillman ++ 2015 Courtney Gibbons ++ 2015 Branden Stone ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Book3264Examples.m2 ++Copyright: 2010 Charley Crissman ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/BooleanGB.m2 ++Copyright: 2011 Franziska Hinkelmann ++ 2011 Mike Stillman ++ 2011 Elizabeth Arnold ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Bruns.m2 ++Copyright: 2008 David Eisenbud ++ 2008 Sonja Petrovic ++ 2008 Adam Van Tuyl ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ChainComplexExtras.m2 ++Copyright: 2016 David Eisenbud ++ 2016 Frank Moore ++ 2016 Frank-Olaf Schreyer ++ 2016 Greg Smith ++ 2016 Lily Silverstein ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/CharacteristicClasses.m2 ++Copyright: 2015 Martin Helmer ++ 2015 Christine Jost ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Chordal* ++Copyright: 2017 Diego Cifuentes ++ 2017 Pablo Parrilo ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/CoincidentRootLoci* ++Copyright: 2020 Maria Chiara Brambilla ++ 2020 Giovanni Staglianò ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Complexes.m2 ++Copyright: 2020 Gregory G. Smith ++ 2020 Mike Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/ConformalBlocks.m2 ++ M2/Macaulay2/packages/StatePolytope* ++Copyright: 2008, 2018 Dave Swinarski ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/CorrespondenceScrolls.m2 ++Copyright: 2018 David Eisenbud ++ 2018 Frank-Olaf Schreyer ++ 2018 Alessio Sammartano ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Cremona* ++ M2/Macaulay2/packages/MultiprojectiveVarieties.m2 ++ M2/Macaulay2/packages/Resultants.m2 ++ M2/Macaulay2/packages/SparseResultants.m2 ++ M2/Macaulay2/packages/SpecialFanoFourfolds.m2 ++Copyright: 2020 Giovanni Staglianò ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/DecomposableSparseSystems* ++Copyright: 2020 Taylor Brysiewicz ++ 2020 Jose Israel Rodriguez ++ 2020 Frank Sottile ++ 2020 Thomas Yahl ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Depth.m2 ++Copyright: 2010 Bart Snapp ++ 2016 David Eisenbud ++ 2016 Branden Stone ++License: public-domain ++ ++Files: M2/Macaulay2/packages/DeterminantalRepresentations.m2 ++Copyright: 2019 Justin Chen ++ 2019 Papri Dey ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/DGAlgebras.m2 ++Copyright: 2017 Frank Moore ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/DiffAlg.m2 ++Copyright: 2018 Manuel Dubinsky ++ 2018 Cesar Massri ++ 2018 Ariel Molinuevo ++ 2018 Federico Quallbrunn ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Divisor.m2 ++Copyright: 2018 Karl Schwede ++ 2018 Zhaoning Yang ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Dmodules* ++Copyright: 1999-2009 Anton Leykin ++ 1999-2009 Harrison Tsai ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/EdgeIdeals.m2 ++Copyright: 2008-2010 Chris Francisco ++ 2008-2010 Andrew Hoefel ++ 2008-2010 Adam Van Tuyl ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/EliminationMatrices.m2 ++Copyright: 2011, 2012 Nicolás Botbol ++ 2011, 2012 Laurent Busé ++ 2011, 2012 Manuel Dubinsky ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/EllipticCurves.m2 ++Copyright: 2014 Alessandro Oneto ++ 2014 Stefano Marseglia ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/EngineTests* ++ M2/Macaulay2/packages/undistributed-packages/CustomEngineTests.m2 ++ M2/Macaulay2/packages/undistributed-packages/FastLinearAlgebra* ++Copyright: 2011 Michael E. Stillman ++ 2011 Jakob Kröker ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/EnumerationCurves.m2 ++Copyright: 2013 Hiep Dang ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/EquivariantGB* ++Copyright: 2014 Chris Hillar ++ 2014 Robert Krone ++ 2014 Anton Leykin ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/EigenSolver.m2 ++Copyright: 2020 Laurent Busé ++ 2020 Justin Chen ++ 2020 Kisun Lee ++ 2020 Anton Leykin ++ 2020 Tomas Pajdla ++ 2020 Erika Pirnes ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ExampleSystems* ++Copyright: 2020 Anton Leykin ++ 2020 Justin Chen ++ 2020 Kelly Maluccio ++ 2020 Leah Gold ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ExteriorIdeals.m2 ++Copyright: 2017 Marilena Crupi ++ 2017 Luca Amata ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/FastLinAlg.m2 ++Copyright: 2020 Boyana Martinova ++ 2020 Marcus Robinson ++ 2020 Karl Schwede ++ 2020 Yuhui (Wei) Yao ++License: public-domain ++ ++Files: M2/Macaulay2/packages/FGLM.m2 ++Copyright: 2019 Dylan Peifer ++ 2019 Mahrud Sayrafi ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/FiniteFittingIdeals.m2 ++Copyright: 2015 Gustav Sædén Ståhl ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/FormalGroupLaws.m2 ++ M2/Macaulay2/packages/Graphics.m2 ++ M2/Macaulay2/packages/WeylGroups* ++Copyright: 2010, 2012 Baptiste Calmès ++ 2010, 2012 Viktor Petrov ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/FourierMotzkin.m2 ++Copyright: 1998-2000, 2006, 2008, 2010 Gregory G. Smith ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/FourTiTwo.m2 ++Copyright: 2008, 2009 Mike Stillman ++ 2008, 2009 Josephine Yu ++ 2008, 2009 Sonja Petrovic ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/FrobeniusThresholds* ++Copyright: 2019 Juliette Bruce ++ 2019 Daniel Hernández ++ 2019 Karl Schwede ++ 2019 Dan Smolkin ++ 2019 Pedro Teixeira ++ 2019 Emily Witt ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/GenericInitialIdeal.m2 ++ M2/Macaulay2/packages/Regularity.m2 ++Copyright: 2008, 2009 Alexandra Seceleanu ++ 2008, 2009 Nathaniel Stapleton ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/gfanInterface.m2 ++Copyright: 2012 Mike Stillman ++ 2012 Andrew Hoefel ++ 2012 Diane Maclagan ++ 2012 Josephine Yu ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/GKMVarieties* ++Copyright: 2020 Chris Eur ++ 2020 Ritvik Ramkumar ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/GradedLieAlgebras* ++Copyright: 2020 Clas Löfwall ++ 2020 Samuel Lundqvist ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/GraphicalModels.m2 ++Copyright: 2013 Luis Garcia-Puente ++ 2013 Sonja Petrovic ++ 2013 Mike Stillman ++ 2013 Seth Sullivant ++ 2013 Alexander Diaz ++ 2013 Shaowei Lin ++ 2013 David Murrugarra ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/GraphicalModelsMLE.m2 ++Copyright: 2020 Carlos Amendola ++ 2020 Luis David Garcia Puente ++ 2020 Roser Homs Pons ++ 2020 Olga Kuznetsova ++ 2020 Harshit J Motwani ++ 2020 Elina Robeva ++ 2020 David Swinarski ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/Graphs.m2 ++Copyright: 2010 Amelia Taylor ++ 2010 Augustine O'Keefe ++ 2014 Jack Burkart ++ 2014 David Cook II ++ 2014 Caroline Jansen ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/GroebnerWalk.m2 ++Copyright: 2017 Dylan Peifer ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/Hadamard.m2 ++Copyright: 2020 Iman Bahmani Jafarloo ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/HighestWeights* ++Copyright: 2014 Federico Galetto ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/HodgeIntegrals.m2 ++Copyright: 2010 Stephanie Yang ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/HyperplaneArrangements.m2 ++Copyright: 2008-2016 Graham Denham ++ 2008-2016 Gregory G. Smith ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/IntegralClosure* ++Copyright: 2020 David Eisenbud ++ 2020 Mike Stillman ++ 2020 Amelia Taylor ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/InvariantRing.m2 ++Copyright: 2014 Thomas Hawes ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/InverseSystems.m2 ++Copyright: 2018 David Eisenbud ++ 2018 Mats Boij ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/InvolutiveBases.m2 ++Copyright: 2009 Daniel Robertz ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/K3Carpets.m2 ++Copyright: 2018 David Eisenbud ++ 2018 Frank-Olaf Schreyer ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Kronecker.m2 ++Copyright: 2010 Edward Carter ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/KustinMiller.m2 ++Copyright: 2011 Janko Boehm ++ 2011 Stavros Papadakis ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/LatticePolytopes.m2 ++Copyright: 2015 Anders Lundman ++ 2015 Gustav Sædén Ståhl ++License: public-domain ++ ++Files: M2/Macaulay2/packages/LexIdeals.m2 ++Copyright: 2008 Chris Francisco ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/LieTypes.m2 ++Copyright: 2018 Dave Swinarski ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/LocalRings* ++Copyright: 2017 Mahrud Sayrafi ++ 2008, 2017 Mike Stillman ++ 2008 David Eisenbud ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/M0nbar.m2 ++Copyright: 2014 Han-Bom Moon ++ 2014 David Swinarski ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/doc_lists.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/doc_tables.m2 ++Copyright: 2018 Daniel R. Grayson ++ 2018 Lily Silverstein ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/accumulate-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/append-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/commonest-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/compositions-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/deepSplice-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/delete-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/demark-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/drop-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/first-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/flatten-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/fold-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/horizontalJoin-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/insert-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/merge-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/part-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/partitions-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/parts-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/polarize-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/prepend-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/separate-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/substring-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/uniform-doc.m2 ++Copyright: 2018 Lily Silverstein ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/all-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/any-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/apply-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/atan-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/cos-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/hilbertPolynomial-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/hilbertSeries-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/poincare-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/poincareN-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/reduceHilbert-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/sin-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/sinh-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/tan-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/tanh-doc.m2 ++Copyright: L. Gold ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/applyKeys-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/applyPairs-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/applyValues-doc.m2 ++Copyright: L. Gold, Lily Silverstein ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/betti-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/koszul-doc.m2 ++Copyright: Caviglia, Kummini ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/binomial-doc.m2 ++Copyright: M2Fest2005 DE ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/char-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/source-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/target-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/transpose-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/groebner.m2 ++Copyright: kummini ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/codim-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/cotangentSheaf-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/dim-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/genera-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/genus-doc.m2 ++Copyright: Decker, Popescu ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/cohomology-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/euler-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/HH-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/tangentSheaf-doc.m2 ++Copyright: Sorin Popescu ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/compress-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/diagonalMatrix-doc.m2 ++Copyright: 2005 M2fest ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/degreesRing-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/hilbertFunction-doc.m2 ++Copyright: L. Gold ++ Dan Grayson ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/frac-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/permanents-doc.m2 ++Copyright: 2005 M2Fest -- Irena ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/irreducibleCharacteristicSeries-doc.m2 ++Copyright: Decker ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/intersect-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/regularity-doc.m2 ++ M2/Macaulay2/packages/PrimaryDecomposition/doc.m2 ++Copyright: Giulio ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/minors-doc.m2 ++Copyright: blasiak, kummini ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/pdim-doc.m2 ++Copyright: L.Gold, Josephine, Jonah ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/symbol-percent-doc.m2 ++Copyright: kummini, MES ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Macaulay2Doc/monomorderings.m2 ++Copyright: Irena, Mike ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Markov.m2 ++Copyright: Luis Garcia ++ Mike Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Matroids.m2 ++Copyright: 2020 Justin Chen ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/MinimalPrimes* ++Copyright: 2014 Frank Moore ++ 2014 Mike Stillman ++ 2014 Franziska Hinkelmann ++ 2020 Justin Chen ++ 2020 Mahrud Sayrafi ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Miura.m2 ++Copyright: 2017 Joe Suzuki ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/MixedMultiplicity.m2 ++Copyright: 2020 Kriti Goel ++ 2020 Sudeshna Roy ++ 2020 J. K. Verma ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ModuleDeformations.m2 ++Copyright: 2007-2008 Bradford Hovinen ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/MonodromySolver* ++Copyright: 2020 Timothy Duff ++ 2020 Cvetelina Hill ++ 2020 Anders Nedergaard Jensen ++ 2020 Kisun Lee ++ 2020 Anton Leykin ++ 2020 Jeff Sommars ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/MonomialAlgebras* ++Copyright: 2013 David Eisenbud ++ 2013 Janko Boehm ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/MultiGradedRationalMap.m2 ++Copyright: 2018 Yairon Cid Ruiz ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/MultiplicitySequence.m2 ++Copyright: 2020 Justin Chen ++ 2020 Youngsu Kim ++ 2020 Jonathan Montaño ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/MultiplierIdeals.m2 ++Copyright: 2011-2013 Claudiu Raicu ++ 2011-2013 Bart Snapp ++ 2011-2013 Zach Teitler ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/MultiplierIdealsDim2.m2 ++Copyright: 2015 Ferran Dachs-Cadefau ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NAGtypes* ++ M2/Macaulay2/packages/undistributed-packages/NAGtools.m2 ++Copyright: 2013 Anton Leykin ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/Nauty.m2 ++ M2/Macaulay2/packages/NautyGraphs.m2 ++ M2/Macaulay2/packages/SimplicialDecomposability.m2 ++Copyright: 2010-2013 David W. Cook II ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/NCAlgebra* ++Copyright: 2016 Frank Moore ++ 2016 Andrew Conner ++ 2016 Courtney Gibbons ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NoetherNormalization.m2 ++Copyright: 2010 Bart Snap ++ 2010 Nathaniel Stapleton ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NoetherianOperators.m2 ++Copyright: 2020 Robert Krone ++ 2020 Justin Chen ++ 2020 Marc Harkonen ++ 2020 Yairon Cid-Ruiz ++ 2020 Anton Leykin ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NonminimalComplexes.m2 ++ M2/Macaulay2/packages/RandomCanonicalCurves.m2 ++ M2/Macaulay2/packages/RandomGenus14Curves.m2 ++Copyright: 2011 Frank-Olaf Schreyer ++ 2011 Hans-Christian Graf v. Bothmer ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Normaliz.m2 ++Copyright: 2009, 2010 Winfried Bruns ++ 2009, 2010 Gesa Kaempf ++ 2011, 2012, 2015, 2016 Christof Soeger ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/NormalToricVarieties* ++ M2/Macaulay2/packages/SpectralSequences.m2 ++Copyright: 2009-2020 Gregory G. Smith ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/NumericalAlgebraicGeometry* ++Copyright: 2014 Anton Leykin ++ 2014 Robert Krone ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/NumericalCertification* ++Copyright: 2018 Kisun Lee ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NumericalImplicitization.m2 ++Copyright: 2019 Justin Chen ++ 2018 Joe Kileel ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NumericalLinearAlgebra.m2 ++Copyright: 2020 Robert Krone ++ 2020 Marc Harkonen ++ 2020 Anton Leykin ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NumericalSchubertCalculus* ++Copyright: 2017 Anton Leykin ++ 2017 Abraham Martin del Campo ++ 2017 Frank Sottile ++ 2017 Jan Verschelde ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/NumericSolutions.m2 ++Copyright: 2017 Laura Menini ++ 2017 Corrado Possieri ++ 2017 Antonio Tornambe ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/OldPolyhedra.m2 ++Copyright: 2010 René Birkner ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/OldToricVectorBundles.m2 ++ M2/Macaulay2/packages/ToricVectorBundles.m2 ++Copyright: 2010 René Birkner ++ 2010 Nathan Owen Ilten ++ 2010 Lars Petersen ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/OpenMath* ++ M2/Macaulay2/packages/SCSCP* ++Copyright: 2009 Dan Roozemond (TU Eindhoven, Netherlands) ++ ++License: Apache-2.0 ++ ++Files: M2/Macaulay2/packages/PackageCitations.m2 ++Copyright: 2017 Aaron Dall ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/PencilsOfQuadrics.m2 ++Copyright: 2020 Frank-Olaf Schreyer ++ 2020 David Eisenbud ++ 2020 Yeongrak Kim ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Permanents.m2 ++Copyright: 2014 Tair Akhmejanov ta328@cornell.edu ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/PHCpack.m2 ++Copyright: 2013 Elizabeth Gross ++ 2013 Sonja Petrovic ++ 2013 Jan Verschelde ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/PhylogeneticTrees.m2 ++Copyright: 2016 Hector Banos ++ 2016 Nathaniel Bushek ++ 2016 Ruth Davidson ++ 2016 Elizabeth Gross ++ 2016 Pamela Harris ++ 2016 Robert Krone ++ 2016 Colby Long ++ 2016 AJ Stewart ++ 2016 Robert Walker ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/PieriMaps.m2 ++Copyright: 2008, 2009 Steven V Sam ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/Points.m2 ++Copyright: 2008 Mike Stillman ++ 2008 Gregory G. Smith ++ 2008 Stein A. Strømme ++ 2016 David Eisenbud ++ 2018 Federico Galetto ++ 2018 Joseph W. Skelton ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Polyhedra* ++Copyright: 2010 René Birkner ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/Polymake.m2 ++Copyright: 2008 Josephine Yu jyu@math.mit.edu> ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Posets.m2 ++Copyright: 2011-2014 David Cook II ++ 2011-2014 Sonja Mapes ++ 2011-2014 Gwyn Whieldon ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/PositivityToricBundles.m2 ++Copyright: 2020 Andreas Hochenegger ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/Pullback.m2 ++Copyright: 2018 Drew Ellingson ++ 2018 Karl Schwede ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/PushForward.m2 ++Copyright: 2015 Claudiu Raicu ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/QthPower.m2 ++Copyright: 2014 Douglas A. Leonard leonada@auburn.edu ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Quasidegrees.m2 ++Copyright: 2015 Roberto Barrera ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/QuillenSuslin.m2 ++Copyright: 2013 Brett Barwick ++ 2013 Branden Stone ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/RandomComplexes.m2 ++ M2/Macaulay2/packages/SVDComplexes.m2 ++Copyright: 2018 Frank Schreyer ++ 2018 Michael E. Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/RandomCurves.m2 ++ M2/Macaulay2/packages/RandomPlaneCurves.m2 ++ M2/Macaulay2/packages/RandomSpaceCurves.m2 ++Copyright: 2011 Frank-Olaf Schreyer ++ 2011 Hans-Christian Graf v. Bothmer ++ 2011 Florian Geiss ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/RandomCurvesOverVerySmallFiniteFields.m2 ++Copyright: 2018 Christian Bopp ++ 2011 Frank-Olaf Schreyer ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/RandomIdeals.m2 ++ M2/Macaulay2/packages/ResidualIntersections.m2 ++Copyright: 2016 Katie Ansaldi ++ 2016 David Eisenbud ++ 2016 Robert Krone ++ 2016 Jay Yang ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/RandomMonomialIdeals.m2 ++Copyright: 2019 Sonja Petrovic ++ 2019 Despina Stasi ++ 2019 Dane Wilburne ++ 2019 Tanner Zielinski ++ 2019 Daniel Kosmas ++ 2019 Parker Joncus ++ 2019 Richard Osborn ++ 2019 Monica Yun ++ 2019 Genevieve Hummel ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/RandomObjects.m2 ++Copyright: 2011 Hans-Christian Graf v. Bothmer ++ 2011 Florian Geiss ++ 2011 Daniel R. Grayson ++ 2011 Frank-Olaf Schreyer ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/RandomRationalPoints.m2 ++Copyright: 2020 Sankhaneel Bisui ++ 2020 Thai Nguyen ++ 2020 Karl Schwede ++ 2020 Sarasij Maitra ++ 2020 Zhan Jiang ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/RationalMaps.m2 ++Copyright: 2019 Karl Schwede ++ 2019 Daniel Smolkin ++ 2019 S. Hamid Hassanzadeh ++ 2019 C.J. Bott ++License: public-domain ++ ++Files: M2/Macaulay2/packages/RationalPoints.m2 ++Copyright: 2009 Nathaniel Stapleton ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/ReactionNetworks* ++Copyright: 2016 Cvetelina Hill ++ 2016 Timothy Duff ++ 2016 Kisun Lee ++ 2016 Anton Leykin ++ 2018 Alexandru Iosif ++ 2018 Michael Adamer ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ReesAlgebra.m2 ++Copyright: 2006, 2008, 2017, 2019 David Eisenbud ++ 2006, 2008, 2017, 2019 Amelia Taylor ++ 2006, 2008, 2017, 2019 Sorin Popescu ++ 2006, 2008, 2017, 2019 Michael E. Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/RelativeCanonicalResolution.m2 ++Copyright: 2020 Christian Bopp ++ 2020 Michael Hoff ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ResLengthThree.m2 ++Copyright: 2020 Lars Winther Christensen ++ 2020 Luigi Ferraro ++ 2020 Francesca Gandini ++ 2020 Frank Moore ++ 2020 Oana Veliche ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/ResolutionsOfStanleyReisnerRings.m2 ++Copyright: 2020 Ashleigh Adams ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/RunExternalM2.m2 ++ M2/Macaulay2/packages/VectorFields.m2 ++Copyright: 2016 Brian Pike ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/Saturation* ++Copyright: 2020 Justin Chen ++ 2020 Mahrud Sayrafi ++ 2020 Mike Stillman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/Schubert2* ++Copyright: 2013 Daniel R. Grayson ++ 2013 Michael E. Stillman ++ 2013 Stein A. Strømme ++ 2013 David Eisenbud ++ 2013 Charley Crissman ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/SchurComplexes.m2 ++Copyright: 2019 Michael K. Brown ++ 2019 Amy Huang ++ 2019 Robert Laudone ++ 2019 Michael Perlman ++ 2019 Claudiu Raicu ++ 2019 Steven V. Sam ++ 2019 Joao Pedro Santos ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SchurFunctors* ++Copyright: 2008 Michael E. Stillman ++ 2008 Anton Leykin ++ 2008 Mauricio Velasco ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/SchurRings.m2 ++Copyright: 2007, 2011 Michael Stillman ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/SectionRing.m2 ++Copyright: 2016 Andrew Bydlon ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SegreClasses.m2 ++Copyright: 2018 Martin Helmer ++ 2018 Corey Harris ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SemidefiniteProgramming* ++ M2/Macaulay2/packages/SumsOfSquares* ++Copyright: 2018, 2019 Diego Cifuentes ++ 2018, 2019 Thomas Kahle ++ 2018, 2019 Pablo A. Parrilo ++ 2018, 2019 Helfried Peyrl ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Seminormalization.m2 ++Copyright: 2019 Karl Schwede ++ 2019 Bernard Serbinowski ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SimpleDoc* ++Copyright: 2020 Daniel R. Grayson ++ 2020 Mike Stillman ++ 2020 Mahrud Sayrafi ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/SimplicialComplexes.m2 ++Copyright: 2006, 2010 Sorin Popescu ++ 2006, 2010 Gregory G. Smith ++ 2006, 2010 Mike Stillman ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/SimplicialPosets.m2 ++Copyright: 2019 Nathan Nichols ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/SlackIdeals.m2 ++Copyright: 2020 Amy Wiebe ++ 2020 Antonio Macchia ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SLnEquivariantMatrices.m2 ++Copyright: 2017-2018 Paolo Lella ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/SLPexpressions* ++Copyright: 2019 Anton Leykin ++ 2019 Timothy Duff ++ 2019 Justin Chen ++ 2019 Mike Stillman ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/SpaceCurves.m2 ++Copyright: 2018 Frank Schreyer ++ 2018 Mike Stillman ++ 2018 Mengyuan Zhang ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/SpechtModule.m2 ++Copyright: 2019 Jonathan Niño ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/StatGraphs.m2 ++Copyright: 2020 Carlos Amendola ++ 2020 Luis David Garcia Puente ++ 2020 Roser Homs Pons ++ 2020 Olga Kuznetsova ++ 2020 Harshit J Motwani ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/StronglyStableIdeals.m2 ++Copyright: 2018 Davide Alberelli ++ 2018 Paolo Lella ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SwitchingFields.m2 ++Copyright: 2020 Zhan Jiang ++ 2020 Sarasij Maitra ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SymbolicPowers.m2 ++Copyright: 2019 Eloisa Grifo ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/SymmetricPolynomials.m2 ++ M2/Macaulay2/packages/undistributed-packages/ToricCohomology.m2 ++Copyright: 2009 Alexandra Seceleanu ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/TangentCone.m2 ++Copyright: 2006 Craig Huneke ++ 2006 David Eisenbud ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/TateOnProducts.m2 ++Copyright: 2020 Daniel Erman ++ 2020 David Eisenbud ++ 2020 Frank-Olaf Schreyer ++ 2020 Michael E. Stillman ++ 2020 Yeongrak Kim ++Comment: See Comment at the top of this file. ++License: GPL-2+ and public-domain ++ ++Files: M2/Macaulay2/packages/TensorComplexes.m2 ++Copyright: 2011 David Eisenbud ++ 2011 Daniel Erman ++ 2011 Gregory G. Smith ++ 2011 Dumitru Stamate ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/TestIdeals* ++Copyright: 2019 Erin Bela ++ 2019 Alberto F. Boix ++ 2019 Juliette Bruce ++ 2019 Drew Ellingson ++ 2019 Daniel Hernandez ++ 2019 Zhibek Kadyrsizova ++ 2019 Mordechai Katzman ++ 2019 Sara Malec ++ 2019 Matthew Mastroeni ++ 2019 Maral Mostafazadehfard ++ 2019 Marcus Robinson ++ 2019 Karl Schwede ++ 2019 Dan Smolkin ++ 2019 Pedro Teixeira ++ 2019 Emily Witt ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ThreadedGB.m2 ++Copyright: 2020 Sonja Petrovic ++ 2020 Sara Jamshidi Zelenberg ++ 2020 Tanner Zielinski ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/TorAlgebra.m2 ++Copyright: 2018 Lars Winther Christensen ++ 2018 Oana Veliche ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ToricInvariants.m2 ++Copyright: 2018 Martin Helmer ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/ToricTopology.m2 ++Copyright: 2015 Alvise Trevisan ++ 2015 Alexander I. Suciu ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/TriangularSets* ++Copyright: 2017 Diego Cifuentes ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/Triplets.m2 ++Copyright: 2013 Gunnar Floystad ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Tropical* ++Copyright: 2019 Carlos Amendola ++ 2019 Kathlen Kohn ++ 2019 Sara Lamboglia ++ 2019 Diane Maclagan ++ 2019 Benjamin Smith ++ 2019 Jeff Sommars ++ 2019 Paolo Tripoli ++ 2019 Magdalena Zajaczkowska ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/undistributed-packages/FrobeniusMultiplicities.m2 ++ M2/Macaulay2/packages/undistributed-packages/Functoriality.m2 ++Copyright: 2009 Jason G McCullough ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/undistributed-packages/Polyhedra2.m2 ++ M2/Macaulay2/packages/undistributed-packages/PolyhedralObjects.m2 ++Copyright: 2012 Nathan Ilten ++ 2012 Josephine Yu ++ 2012 Qingchun Ren ++ 2010 Rene Birker ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/undistributed-packages/PolymakeInterface.m2 ++Copyright: 2012 Josephine Yu ++ 2012 Nathan Ilten ++ 2012 Qingchun Ren ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/undistributed-packages/SubalgebraBases/sagbieng.m2 ++ M2/Macaulay2/packages/undistributed-packages/SubalgebraBases/sagbitop.m2 ++Copyright: 1997 Mike Stillman ++ 1997 Harry Tsai ++License: GPL-2+ ++ ++Files: M2/Macaulay2/packages/VersalDeformations.m2 ++Copyright: 2020 Nathan Owen Ilten ++License: GPL-3+ ++ ++Files: M2/Macaulay2/packages/VirtualResolutions* ++Copyright: 2018-2020 Ayah Almousa ++ 2018-2020 Christine Berkesch ++ 2018-2020 Juliette Bruce ++ 2018-2020 David Eisenbud ++ 2018-2020 Michael Loper ++ 2018-2020 Mahrud Sayrafi ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/packages/Visualize* ++Copyright: 2017 Brett Barwick ++ 2017 Thomas Enkosky ++ 2017 Branden Stone ++ 2017 Jim Vallandingham ++License: GPL-2+ ++ ++Files: debian/missing-sources/nouislider.*/* ++ M2/Macaulay2/packages/Visualize/css/nouislider.* ++ M2/Macaulay2/packages/Visualize/js/nouislider.min.js ++Copyright: 2016 Leon Gersen ++License: WTFPL ++Comment: https://github.com/leongersen/noUiSlider/tree/8.5.1 ++ ++Files: M2/Macaulay2/packages/Visualize/*/BootSideMenu.* ++Copyright: 2014-2017 Andrea Lombardo ++License: Apache-2.0 ++Comment: https://github.com/AndreaLombardo/BootSideMenu ++ ++Files: M2/Macaulay2/packages/PrimaryDecomposition/associatedPrimes-test.m2 ++Copyright: 2002 Jessica Sidman ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/tests/normal/CSM.test.m2 ++Copyright: 2002 Paolo Aluffi ++License: freely-used-if-properly-acknowledged ++ This code can be freely used, provided use is properly acknowledged ++ ++Files: M2/Macaulay2/tests/normal/ext2.m2 ++Copyright: Ezra Miller ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/tests/normal/ext3.m2 ++Copyright: Hal Schenck ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/tests/normal/groupcoh.m2 ++Copyright: Sarah Wasserman ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/tests/normal/monideal2.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/det-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/genericMatrix-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/genericSkewMatrix-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/genericSymmetricMatrix-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/ideal-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isAffineRing-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isCommutative-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isField-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isFreeModule-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isIdeal-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isModule-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isMonomialIdeal-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isPolynomialRing-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isPrime-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isQuotientModule-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isQuotientRing-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isRing-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isSquareFree-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isSubmodule-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/isUnit-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/standardPairs-doc.m2 ++ M2/Macaulay2/packages/Macaulay2Doc/functions/vars-doc.m2 ++Copyright: Gregory G. Smith ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/tests/normal/schreyer.m2 ++Copyright: Frank Schreyer ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/Macaulay2/tests/rationality/*.m2 ++Copyright: Christian Boehning ++ Hans-Christian Graf v. Bothmer ++Comment: See Comment at the top of this file. ++License: public-domain ++ ++Files: M2/usr-build/pkg.m4 ++Copyright: 2004 Scott James Remnant . ++ 2012-2015 Dan Nicholson ++License: GPL-2+ with autoconf exception ++ ++Files: M2/util/validator-runner.py ++Copyright: 2020 Janus Troelsen ++License: 0BSD ++Comment: https://github.com/ysangkok/w3c-validator-runner/blob/master/LICENSE ++ ++License: 0BSD ++ Permission to use, copy, modify, and/or distribute this software for any ++ purpose with or without fee is hereby granted. ++ . ++ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH ++ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, ++ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM ++ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR ++ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ++ PERFORMANCE OF THIS SOFTWARE. ++ ++License: BSD-3-clause ++ Redistribution and use in source and binary forms, with or without ++ modification, are permitted provided that the following conditions are ++ met: ++ . ++ 1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ 2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ 3. Neither the name of the copyright holder nor the names of its ++ contributors may be used to endorse or promote products derived from ++ this software without specific prior written permission. ++ . ++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, ++ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, ++ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS ++ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED ++ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY ++ WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++ POSSIBILITY OF SUCH DAMAGE. ++ ++License: CECILL-B ++ CeCILL-B FREE SOFTWARE LICENSE AGREEMENT ++ . ++ Notice ++ . ++ This Agreement is a Free Software license agreement that is the result ++ of discussions between its authors in order to ensure compliance with ++ the two main principles guiding its drafting: ++ . ++ * firstly, compliance with the principles governing the distribution ++ of Free Software: access to source code, broad rights granted to ++ users, ++ * secondly, the election of a governing law, French law, with which ++ it is conformant, both as regards the law of torts and ++ intellectual property law, and the protection that it offers to ++ both authors and holders of the economic rights over software. ++ . ++ The authors of the CeCILL-B (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre]) ++ license are: ++ . ++ Commissariat à l'Energie Atomique - CEA, a public scientific, technical ++ and industrial research establishment, having its principal place of ++ business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. ++ . ++ Centre National de la Recherche Scientifique - CNRS, a public scientific ++ and technological establishment, having its principal place of business ++ at 3 rue Michel-Ange, 75794 Paris cedex 16, France. ++ . ++ Institut National de Recherche en Informatique et en Automatique - ++ INRIA, a public scientific and technological establishment, having its ++ principal place of business at Domaine de Voluceau, Rocquencourt, BP ++ 105, 78153 Le Chesnay cedex, France. ++ . ++ Preamble ++ . ++ This Agreement is an open source software license intended to give users ++ significant freedom to modify and redistribute the software licensed ++ hereunder. ++ . ++ The exercising of this freedom is conditional upon a strong obligation ++ of giving credits for everybody that distributes a software ++ incorporating a software ruled by the current license so as all ++ contributions to be properly identified and acknowledged. ++ . ++ In consideration of access to the source code and the rights to copy, ++ modify and redistribute granted by the license, users are provided only ++ with a limited warranty and the software's author, the holder of the ++ economic rights, and the successive licensors only have limited liability. ++ . ++ In this respect, the risks associated with loading, using, modifying ++ and/or developing or reproducing the software by the user are brought to ++ the user's attention, given its Free Software status, which may make it ++ complicated to use, with the result that its use is reserved for ++ developers and experienced professionals having in-depth computer ++ knowledge. Users are therefore encouraged to load and test the ++ suitability of the software as regards their requirements in conditions ++ enabling the security of their systems and/or data to be ensured and, ++ more generally, to use and operate it in the same conditions of ++ security. This Agreement may be freely reproduced and published, ++ provided it is not altered, and that no provisions are either added or ++ removed herefrom. ++ . ++ This Agreement may apply to any or all software for which the holder of ++ the economic rights decides to submit the use thereof to its provisions. ++ . ++ Article 1 - DEFINITIONS ++ . ++ For the purpose of this Agreement, when the following expressions ++ commence with a capital letter, they shall have the following meaning: ++ . ++ Agreement: means this license agreement, and its possible subsequent ++ versions and annexes. ++ . ++ Software: means the software in its Object Code and/or Source Code form ++ and, where applicable, its documentation, "as is" when the Licensee ++ accepts the Agreement. ++ . ++ Initial Software: means the Software in its Source Code and possibly its ++ Object Code form and, where applicable, its documentation, "as is" when ++ it is first distributed under the terms and conditions of the Agreement. ++ . ++ Modified Software: means the Software modified by at least one ++ Contribution. ++ . ++ Source Code: means all the Software's instructions and program lines to ++ which access is required so as to modify the Software. ++ . ++ Object Code: means the binary files originating from the compilation of ++ the Source Code. ++ . ++ Holder: means the holder(s) of the economic rights over the Initial ++ Software. ++ . ++ Licensee: means the Software user(s) having accepted the Agreement. ++ . ++ Contributor: means a Licensee having made at least one Contribution. ++ . ++ Licensor: means the Holder, or any other individual or legal entity, who ++ distributes the Software under the Agreement. ++ . ++ Contribution: means any or all modifications, corrections, translations, ++ adaptations and/or new functions integrated into the Software by any or ++ all Contributors, as well as any or all Internal Modules. ++ . ++ Module: means a set of sources files including their documentation that ++ enables supplementary functions or services in addition to those offered ++ by the Software. ++ . ++ External Module: means any or all Modules, not derived from the ++ Software, so that this Module and the Software run in separate address ++ spaces, with one calling the other when they are run. ++ . ++ Internal Module: means any or all Module, connected to the Software so ++ that they both execute in the same address space. ++ . ++ Parties: mean both the Licensee and the Licensor. ++ . ++ These expressions may be used both in singular and plural form. ++ . ++ Article 2 - PURPOSE ++ . ++ The purpose of the Agreement is the grant by the Licensor to the ++ Licensee of a non-exclusive, transferable and worldwide license for the ++ Software as set forth in Article 5 hereinafter for the whole term of the ++ protection granted by the rights over said Software. ++ . ++ Article 3 - ACCEPTANCE ++ . ++ 3.1 The Licensee shall be deemed as having accepted the terms and ++ conditions of this Agreement upon the occurrence of the first of the ++ following events: ++ . ++ * (i) loading the Software by any or all means, notably, by ++ downloading from a remote server, or by loading from a physical ++ medium; ++ * (ii) the first time the Licensee exercises any of the rights ++ granted hereunder. ++ . ++ 3.2 One copy of the Agreement, containing a notice relating to the ++ characteristics of the Software, to the limited warranty, and to the ++ fact that its use is restricted to experienced users has been provided ++ to the Licensee prior to its acceptance as set forth in Article 3.1 ++ hereinabove, and the Licensee hereby acknowledges that it has read and ++ understood it. ++ . ++ Article 4 - EFFECTIVE DATE AND TERM ++ . ++ 4.1 EFFECTIVE DATE ++ . ++ The Agreement shall become effective on the date when it is accepted by ++ the Licensee as set forth in Article 3.1. ++ . ++ 4.2 TERM ++ . ++ The Agreement shall remain in force for the entire legal term of ++ protection of the economic rights over the Software. ++ . ++ Article 5 - SCOPE OF RIGHTS GRANTED ++ . ++ The Licensor hereby grants to the Licensee, who accepts, the following ++ rights over the Software for any or all use, and for the term of the ++ Agreement, on the basis of the terms and conditions set forth hereinafter. ++ . ++ Besides, if the Licensor owns or comes to own one or more patents ++ protecting all or part of the functions of the Software or of its ++ components, the Licensor undertakes not to enforce the rights granted by ++ these patents against successive Licensees using, exploiting or ++ modifying the Software. If these patents are transferred, the Licensor ++ undertakes to have the transferees subscribe to the obligations set ++ forth in this paragraph. ++ . ++ 5.1 RIGHT OF USE ++ . ++ The Licensee is authorized to use the Software, without any limitation ++ as to its fields of application, with it being hereinafter specified ++ that this comprises: ++ . ++ 1. permanent or temporary reproduction of all or part of the Software ++ by any or all means and in any or all form. ++ . ++ 2. loading, displaying, running, or storing the Software on any or ++ all medium. ++ . ++ 3. entitlement to observe, study or test its operation so as to ++ determine the ideas and principles behind any or all constituent ++ elements of said Software. This shall apply when the Licensee ++ carries out any or all loading, displaying, running, transmission ++ or storage operation as regards the Software, that it is entitled ++ to carry out hereunder. ++ . ++ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS ++ . ++ The right to make Contributions includes the right to translate, adapt, ++ arrange, or make any or all modifications to the Software, and the right ++ to reproduce the resulting software. ++ . ++ The Licensee is authorized to make any or all Contributions to the ++ Software provided that it includes an explicit notice that it is the ++ author of said Contribution and indicates the date of the creation thereof. ++ . ++ 5.3 RIGHT OF DISTRIBUTION ++ . ++ In particular, the right of distribution includes the right to publish, ++ transmit and communicate the Software to the general public on any or ++ all medium, and by any or all means, and the right to market, either in ++ consideration of a fee, or free of charge, one or more copies of the ++ Software by any means. ++ . ++ The Licensee is further authorized to distribute copies of the modified ++ or unmodified Software to third parties according to the terms and ++ conditions set forth hereinafter. ++ . ++ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION ++ . ++ The Licensee is authorized to distribute true copies of the Software in ++ Source Code or Object Code form, provided that said distribution ++ complies with all the provisions of the Agreement and is accompanied by: ++ . ++ 1. a copy of the Agreement, ++ . ++ 2. a notice relating to the limitation of both the Licensor's ++ warranty and liability as set forth in Articles 8 and 9, ++ . ++ and that, in the event that only the Object Code of the Software is ++ redistributed, the Licensee allows effective access to the full Source ++ Code of the Software at a minimum during the entire period of its ++ distribution of the Software, it being understood that the additional ++ cost of acquiring the Source Code shall not exceed the cost of ++ transferring the data. ++ . ++ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE ++ . ++ If the Licensee makes any Contribution to the Software, the resulting ++ Modified Software may be distributed under a license agreement other ++ than this Agreement subject to compliance with the provisions of Article ++ 5.3.4. ++ . ++ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES ++ . ++ When the Licensee has developed an External Module, the terms and ++ conditions of this Agreement do not apply to said External Module, that ++ may be distributed under a separate license agreement. ++ . ++ 5.3.4 CREDITS ++ . ++ Any Licensee who may distribute a Modified Software hereby expressly ++ agrees to: ++ . ++ 1. indicate in the related documentation that it is based on the ++ Software licensed hereunder, and reproduce the intellectual ++ property notice for the Software, ++ . ++ 2. ensure that written indications of the Software intended use, ++ intellectual property notice and license hereunder are included in ++ easily accessible format from the Modified Software interface, ++ . ++ 3. mention, on a freely accessible website describing the Modified ++ Software, at least throughout the distribution term thereof, that ++ it is based on the Software licensed hereunder, and reproduce the ++ Software intellectual property notice, ++ . ++ 4. where it is distributed to a third party that may distribute a ++ Modified Software without having to make its source code ++ available, make its best efforts to ensure that said third party ++ agrees to comply with the obligations set forth in this Article . ++ . ++ If the Software, whether or not modified, is distributed with an ++ External Module designed for use in connection with the Software, the ++ Licensee shall submit said External Module to the foregoing obligations. ++ . ++ 5.3.5 COMPATIBILITY WITH THE CeCILL AND CeCILL-C LICENSES ++ . ++ Where a Modified Software contains a Contribution subject to the CeCILL ++ license, the provisions set forth in Article 5.3.4 shall be optional. ++ . ++ A Modified Software may be distributed under the CeCILL-C license. In ++ such a case the provisions set forth in Article 5.3.4 shall be optional. ++ . ++ Article 6 - INTELLECTUAL PROPERTY ++ . ++ 6.1 OVER THE INITIAL SOFTWARE ++ . ++ The Holder owns the economic rights over the Initial Software. Any or ++ all use of the Initial Software is subject to compliance with the terms ++ and conditions under which the Holder has elected to distribute its work ++ and no one shall be entitled to modify the terms and conditions for the ++ distribution of said Initial Software. ++ . ++ The Holder undertakes that the Initial Software will remain ruled at ++ least by this Agreement, for the duration set forth in Article 4.2. ++ . ++ 6.2 OVER THE CONTRIBUTIONS ++ . ++ The Licensee who develops a Contribution is the owner of the ++ intellectual property rights over this Contribution as defined by ++ applicable law. ++ . ++ 6.3 OVER THE EXTERNAL MODULES ++ . ++ The Licensee who develops an External Module is the owner of the ++ intellectual property rights over this External Module as defined by ++ applicable law and is free to choose the type of agreement that shall ++ govern its distribution. ++ . ++ 6.4 JOINT PROVISIONS ++ . ++ The Licensee expressly undertakes: ++ . ++ 1. not to remove, or modify, in any manner, the intellectual property ++ notices attached to the Software; ++ . ++ 2. to reproduce said notices, in an identical manner, in the copies ++ of the Software modified or not. ++ . ++ The Licensee undertakes not to directly or indirectly infringe the ++ intellectual property rights of the Holder and/or Contributors on the ++ Software and to take, where applicable, vis-�-vis its staff, any and all ++ measures required to ensure respect of said intellectual property rights ++ of the Holder and/or Contributors. ++ . ++ Article 7 - RELATED SERVICES ++ . ++ 7.1 Under no circumstances shall the Agreement oblige the Licensor to ++ provide technical assistance or maintenance services for the Software. ++ . ++ However, the Licensor is entitled to offer this type of services. The ++ terms and conditions of such technical assistance, and/or such ++ maintenance, shall be set forth in a separate instrument. Only the ++ Licensor offering said maintenance and/or technical assistance services ++ shall incur liability therefor. ++ . ++ 7.2 Similarly, any Licensor is entitled to offer to its licensees, under ++ its sole responsibility, a warranty, that shall only be binding upon ++ itself, for the redistribution of the Software and/or the Modified ++ Software, under terms and conditions that it is free to decide. Said ++ warranty, and the financial terms and conditions of its application, ++ shall be subject of a separate instrument executed between the Licensor ++ and the Licensee. ++ . ++ Article 8 - LIABILITY ++ . ++ 8.1 Subject to the provisions of Article 8.2, the Licensee shall be ++ entitled to claim compensation for any direct loss it may have suffered ++ from the Software as a result of a fault on the part of the relevant ++ Licensor, subject to providing evidence thereof. ++ . ++ 8.2 The Licensor's liability is limited to the commitments made under ++ this Agreement and shall not be incurred as a result of in particular: ++ (i) loss due the Licensee's total or partial failure to fulfill its ++ obligations, (ii) direct or consequential loss that is suffered by the ++ Licensee due to the use or performance of the Software, and (iii) more ++ generally, any consequential loss. In particular the Parties expressly ++ agree that any or all pecuniary or business loss (i.e. loss of data, ++ loss of profits, operating loss, loss of customers or orders, ++ opportunity cost, any disturbance to business activities) or any or all ++ legal proceedings instituted against the Licensee by a third party, ++ shall constitute consequential loss and shall not provide entitlement to ++ any or all compensation from the Licensor. ++ . ++ Article 9 - WARRANTY ++ . ++ 9.1 The Licensee acknowledges that the scientific and technical ++ state-of-the-art when the Software was distributed did not enable all ++ possible uses to be tested and verified, nor for the presence of ++ possible defects to be detected. In this respect, the Licensee's ++ attention has been drawn to the risks associated with loading, using, ++ modifying and/or developing and reproducing the Software which are ++ reserved for experienced users. ++ . ++ The Licensee shall be responsible for verifying, by any or all means, ++ the suitability of the product for its requirements, its good working ++ order, and for ensuring that it shall not cause damage to either persons ++ or properties. ++ . ++ 9.2 The Licensor hereby represents, in good faith, that it is entitled ++ to grant all the rights over the Software (including in particular the ++ rights set forth in Article 5). ++ . ++ 9.3 The Licensee acknowledges that the Software is supplied "as is" by ++ the Licensor without any other express or tacit warranty, other than ++ that provided for in Article 9.2 and, in particular, without any warranty ++ as to its commercial value, its secured, safe, innovative or relevant ++ nature. ++ . ++ Specifically, the Licensor does not warrant that the Software is free ++ from any error, that it will operate without interruption, that it will ++ be compatible with the Licensee's own equipment and software ++ configuration, nor that it will meet the Licensee's requirements. ++ . ++ 9.4 The Licensor does not either expressly or tacitly warrant that the ++ Software does not infringe any third party intellectual property right ++ relating to a patent, software or any other property right. Therefore, ++ the Licensor disclaims any and all liability towards the Licensee ++ arising out of any or all proceedings for infringement that may be ++ instituted in respect of the use, modification and redistribution of the ++ Software. Nevertheless, should such proceedings be instituted against ++ the Licensee, the Licensor shall provide it with technical and legal ++ assistance for its defense. Such technical and legal assistance shall be ++ decided on a case-by-case basis between the relevant Licensor and the ++ Licensee pursuant to a memorandum of understanding. The Licensor ++ disclaims any and all liability as regards the Licensee's use of the ++ name of the Software. No warranty is given as regards the existence of ++ prior rights over the name of the Software or as regards the existence ++ of a trademark. ++ . ++ Article 10 - TERMINATION ++ . ++ 10.1 In the event of a breach by the Licensee of its obligations ++ hereunder, the Licensor may automatically terminate this Agreement ++ thirty (30) days after notice has been sent to the Licensee and has ++ remained ineffective. ++ . ++ 10.2 A Licensee whose Agreement is terminated shall no longer be ++ authorized to use, modify or distribute the Software. However, any ++ licenses that it may have granted prior to termination of the Agreement ++ shall remain valid subject to their having been granted in compliance ++ with the terms and conditions hereof. ++ . ++ Article 11 - MISCELLANEOUS ++ . ++ 11.1 EXCUSABLE EVENTS ++ . ++ Neither Party shall be liable for any or all delay, or failure to ++ perform the Agreement, that may be attributable to an event of force ++ majeure, an act of God or an outside cause, such as defective ++ functioning or interruptions of the electricity or telecommunications ++ networks, network paralysis following a virus attack, intervention by ++ government authorities, natural disasters, water damage, earthquakes, ++ fire, explosions, strikes and labor unrest, war, etc. ++ . ++ 11.2 Any failure by either Party, on one or more occasions, to invoke ++ one or more of the provisions hereof, shall under no circumstances be ++ interpreted as being a waiver by the interested Party of its right to ++ invoke said provision(s) subsequently. ++ . ++ 11.3 The Agreement cancels and replaces any or all previous agreements, ++ whether written or oral, between the Parties and having the same ++ purpose, and constitutes the entirety of the agreement between said ++ Parties concerning said purpose. No supplement or modification to the ++ terms and conditions hereof shall be effective as between the Parties ++ unless it is made in writing and signed by their duly authorized ++ representatives. ++ . ++ 11.4 In the event that one or more of the provisions hereof were to ++ conflict with a current or future applicable act or legislative text, ++ said act or legislative text shall prevail, and the Parties shall make ++ the necessary amendments so as to comply with said act or legislative ++ text. All other provisions shall remain effective. Similarly, invalidity ++ of a provision of the Agreement, for any reason whatsoever, shall not ++ cause the Agreement as a whole to be invalid. ++ . ++ 11.5 LANGUAGE ++ . ++ The Agreement is drafted in both French and English and both versions ++ are deemed authentic. ++ . ++ Article 12 - NEW VERSIONS OF THE AGREEMENT ++ . ++ 12.1 Any person is authorized to duplicate and distribute copies of this ++ Agreement. ++ . ++ 12.2 So as to ensure coherence, the wording of this Agreement is ++ protected and may only be modified by the authors of the License, who ++ reserve the right to periodically publish updates or new versions of the ++ Agreement, each with a separate number. These subsequent versions may ++ address new issues encountered by Free Software. ++ . ++ 12.3 Any Software distributed under a given version of the Agreement may ++ only be subsequently distributed under the same version of the Agreement ++ or a subsequent version. ++ . ++ Article 13 - GOVERNING LAW AND JURISDICTION ++ . ++ 13.1 The Agreement is governed by French law. The Parties agree to ++ endeavor to seek an amicable solution to any disagreements or disputes ++ that may arise during the performance of the Agreement. ++ . ++ 13.2 Failing an amicable solution within two (2) months as from their ++ occurrence, and unless emergency proceedings are necessary, the ++ disagreements or disputes shall be referred to the Paris Courts having ++ jurisdiction, by the more diligent Party. ++ . ++ Version 1.0 dated 2006-09-05. ++ ++License: Expat ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ "Software"), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ . ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ . ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ++ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ++ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++License: FSFAP ++ Copying and distribution of this file, with or without modification, ++ are permitted in any medium without royalty provided the copyright ++ notice and this notice are preserved. This file is offered as-is, ++ without any warranty. ++ ++License: GPL-2+ ++ This package is free software; 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 package is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 ++ . ++ On Debian systems, the complete text of the GNU General ++ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". ++ ++License: GPL-2+ with autoconf exception ++ This package is free software; 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 package is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 ++ . ++ 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. ++ . ++ On Debian systems, the complete text of the GNU General ++ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". ++ ++License: GPL-3+ ++ 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 . ++ . ++ On Debian systems, the complete text of the GNU General ++ Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". ++ ++License: public-domain ++ This file is in the public domain. ++ ++License: Apache-2.0 ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ . ++ http://www.apache.org/licenses/LICENSE-2.0 ++ . ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. ++ . ++ On Debian systems, the complete text of the Apache License Version 2.0 ++ can be found in `/usr/share/common-licenses/Apache-2.0'. ++ ++License: WTFPL ++ This work is free. You can redistribute it and/or modify it under the ++ terms of the Do What The Fuck You Want To Public License, Version 2, ++ as published by Sam Hocevar. ++ . ++ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE ++ Version 2, December 2004 ++ . ++ Copyright (C) 2004 Sam Hocevar ++ . ++ Everyone is permitted to copy and distribute verbatim or modified ++ copies of this license document, and changing it is allowed as long ++ as the name is changed. ++ . ++ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE ++ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ++ . ++ 0. You just DO WHAT THE FUCK YOU WANT TO. diff --cc debian/elpa-macaulay2.docs index 0000000,0000000..f58e26a new file mode 100644 --- /dev/null +++ b/debian/elpa-macaulay2.docs @@@ -1,0 -1,0 +1,3 @@@ ++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.m2 ++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.md ++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.txt diff --cc debian/elpa-macaulay2.elpa index 0000000,0000000..6afce0e new file mode 100644 --- /dev/null +++ b/debian/elpa-macaulay2.elpa @@@ -1,0 -1,0 +1,2 @@@ ++debian/macaulay2-pkg.el ++debian/tmp/usr/share/emacs/site-lisp/elpa/macaulay2-*/*.el diff --cc debian/elpa-test index 0000000,0000000..401265d new file mode 100644 --- /dev/null +++ b/debian/elpa-test @@@ -1,0 -1,0 +1,2 @@@ ++# don't override dh_auto_test with dh_elpa_test ++disable = true diff --cc debian/gbp.conf index 0000000,0000000..9e429e1 new file mode 100644 --- /dev/null +++ b/debian/gbp.conf @@@ -1,0 -1,0 +1,16 @@@ ++[buildpackage] ++pristine-tar = True ++# need M2-emacs submodule ++preexport = git submodule init M2/Macaulay2/editors/emacs && ++ git submodule update ++postexport = SOURCE_DIR=`echo $GBP_GIT_DIR | sed 's/\/\.git//'` && ++ cp -r $SOURCE_DIR/M2/Macaulay2/editors/emacs/* \ ++ $GBP_TMP_DIR/M2/Macaulay2/editors/emacs ++# if we're not using export-dir ++prebuild = if test ! -f M2/Macaulay2/editors/emacs/make-M2-emacs-help.m2 ++ then git submodule init M2/Macaulay2/editors/emacs && ++ git submodule update ++ fi ++ ++[export-orig] ++pristine-tar = True diff --cc debian/macaulay2-common.doc-base index 0000000,0000000..33fc4bd new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.doc-base @@@ -1,0 -1,0 +1,16 @@@ ++Document: macaulay2 ++Title: Macaulay2 Documentation ++Author: Daniel R. Grayson and Michael E. Stillman ++Abstract: Macaulay2 is a software system devoted to supporting research in ++ algebraic geometry and commutative algebra, developed with funding from the ++ National Science Foundation. We are eager to help new users get started with ++ it. ++Section: Science/Mathematics ++ ++Format: HTML ++Index: /usr/share/doc/Macaulay2/Macaulay2Doc/html/index.html ++Files: /usr/share/doc/Macaulay2/*/html/*.html ++ ++Format: Info ++Index: /usr/share/info/Macaulay2Doc.info.gz ++Files: /usr/share/info/*.info.gz diff --cc debian/macaulay2-common.install index 0000000,0000000..0c1cc0b new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.install @@@ -1,0 -1,0 +1,3 @@@ ++usr/share/Macaulay2 ++usr/share/doc ++usr/share/info/*.info diff --cc debian/macaulay2-common.linktrees index 0000000,0000000..9c90265 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.linktrees @@@ -1,0 -1,0 +1,28 @@@ ++################################# ++# Embedded Javascript libraries # ++################################# ++ ++# Visualize ++embed-weakdep usr/share/fonts-glyphicons usr/share/Macaulay2/Visualize/fonts ++embed-weakdep usr/share/javascript/bootstrap/css/bootstrap.min.css usr/share/Macaulay2/Visualize/css/bootstrap.min.css ++embed-weakdep usr/share/javascript/bootstrap/js/bootstrap.min.js usr/share/Macaulay2/Visualize/js/bootstrap.min.js ++embed-weakdep usr/share/nodejs/clipboard/dist/clipboard.js usr/share/Macaulay2/Visualize/js/clipboard.min.js ++embed-weakdep usr/share/javascript/d3/d3.min.js usr/share/Macaulay2/Visualize/js/d3.v3.min.js ++embed-weakdep usr/share/javascript/jquery/jquery.min.js usr/share/Macaulay2/Visualize/js/jquery-1.11.3.min.js ++embed-weakdep usr/share/javascript/three/three.min.js usr/share/Macaulay2/Visualize/js/three.min.js ++embed-weakdep usr/share/javascript/underscore/underscore.min.js usr/share/Macaulay2/Visualize/js/underscore.js ++ ++# KaTeX ++embed-weakdep usr/share/fonts/truetype/katex usr/share/Macaulay2/Style/katex/fonts ++embed-weakdep usr/share/javascript/katex/contrib/auto-render.js usr/share/Macaulay2/Style/katex/contrib/auto-render.min.js ++embed-weakdep usr/share/javascript/katex/contrib/copy-tex.css usr/share/Macaulay2/Style/katex/contrib/copy-tex.min.css ++embed-weakdep usr/share/javascript/katex/contrib/copy-tex.js usr/share/Macaulay2/Style/katex/contrib/copy-tex.min.js ++embed-weakdep usr/share/javascript/katex/katex.css usr/share/Macaulay2/Style/katex/katex.min.css ++embed-weakdep usr/share/javascript/katex/katex.js usr/share/Macaulay2/Style/katex/katex.min.js ++ ++######################################## ++# Copies of GNU General Public License # ++######################################## ++ ++embed-weakdep usr/share/common-licenses/GPL-2 usr/share/doc/Macaulay2/COPYING-GPL-2 ++embed-weakdep usr/share/common-licenses/GPL-3 usr/share/doc/Macaulay2/COPYING-GPL-3 diff --cc debian/macaulay2-common.lintian-overrides index 0000000,0000000..3189096 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.lintian-overrides @@@ -1,0 -1,0 +1,55 @@@ ++# these files describe the contents of the corresponding package directories ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Macaulay2Doc/COPYRIGHT ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Macaulay2Doc/README ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Matroids/SmallMatroids.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/MonodromySolver/paper-examples/README.md ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/README ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TST/README.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NAGtypes/TO-DO-doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NCAlgebra/installNCAlgebra.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smallSmoothProjectiveToricVarieties.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties5.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties6.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-WSet.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-arb.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-SLEvaluatorCompiled.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/FunctionsExported.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/README ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/ToDo ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Polyhedra/tests/fails_from_googlegroup.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Polyhedra/TODO ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReactionNetworks/Readme.md ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks-dim3.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks1-n5.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks11+24-n200.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks2-n36.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks21-n100.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks3-n244.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks300-n20.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks491-n1.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks5+53-n204.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks5-n50.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks9+21-n10.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SCSCP/README-gap.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SLPexpressions/TO-DO.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/elliptic_quartics.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/letter_to_collino.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/toricubics.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/character.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schur.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schurModule.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schurModulesMap.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/splitCharacter.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/straightenSchur.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SimpleDoc/doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SimpleDoc/helpers-doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/digraph-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/graph-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/ideal2d-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/ideal3d-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/poset-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/simplicial-complex-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/WeylGroups/tutorial.html diff --cc debian/macaulay2-pkg.el.in index 0000000,0000000..2e91670 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-pkg.el.in @@@ -1,0 -1,0 +1,1 @@@ ++(define-package "macaulay2" "@VERSION@" "Emacs Package for Macaulay2" 'nil) diff --cc debian/macaulay2.install index 0000000,0000000..35ed4f7 new file mode 100644 --- /dev/null +++ b/debian/macaulay2.install @@@ -1,0 -1,0 +1,3 @@@ ++usr/bin ++usr/lib ++usr/share/man diff --cc debian/macaulay2.links index 0000000,0000000..be451e0 new file mode 100644 --- /dev/null +++ b/debian/macaulay2.links @@@ -1,0 -1,0 +1,1 @@@ ++usr/share/man/man1/M2.1 usr/share/man/man1/M2-binary.1 diff --cc debian/missing-sources/nouislider.css/nouislider.css index 0000000,0000000..c512f34 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.css/nouislider.css @@@ -1,0 -1,0 +1,165 @@@ ++ ++/* Functional styling; ++ * These styles are required for noUiSlider to function. ++ * You don't need to change these rules to apply your design. ++ */ ++.noUi-target, ++.noUi-target * { ++-webkit-touch-callout: none; ++-webkit-user-select: none; ++-ms-touch-action: none; ++ touch-action: none; ++-ms-user-select: none; ++-moz-user-select: none; ++ user-select: none; ++-moz-box-sizing: border-box; ++ box-sizing: border-box; ++} ++.noUi-target { ++ position: relative; ++ direction: ltr; ++} ++.noUi-base { ++ width: 100%; ++ height: 100%; ++ position: relative; ++ z-index: 1; /* Fix 401 */ ++} ++.noUi-origin { ++ position: absolute; ++ right: 0; ++ top: 0; ++ left: 0; ++ bottom: 0; ++} ++.noUi-handle { ++ position: relative; ++ z-index: 1; ++} ++.noUi-stacking .noUi-handle { ++/* This class is applied to the lower origin when ++ its values is > 50%. */ ++ z-index: 10; ++} ++.noUi-state-tap .noUi-origin { ++-webkit-transition: left 0.3s, top 0.3s; ++ transition: left 0.3s, top 0.3s; ++} ++.noUi-state-drag * { ++ cursor: inherit !important; ++} ++ ++/* Painting and performance; ++ * Browsers can paint handles in their own layer. ++ */ ++.noUi-base, ++.noUi-handle { ++ -webkit-transform: translate3d(0,0,0); ++ transform: translate3d(0,0,0); ++} ++ ++/* Slider size and handle placement; ++ */ ++.noUi-horizontal { ++ height: 18px; ++} ++.noUi-horizontal .noUi-handle { ++ width: 34px; ++ height: 28px; ++ left: -17px; ++ top: -6px; ++} ++.noUi-vertical { ++ width: 18px; ++} ++.noUi-vertical .noUi-handle { ++ width: 28px; ++ height: 34px; ++ left: -6px; ++ top: -17px; ++} ++ ++/* Styling; ++ */ ++.noUi-background { ++ background: #FAFAFA; ++ box-shadow: inset 0 1px 1px #f0f0f0; ++} ++.noUi-connect { ++ background: #3FB8AF; ++ box-shadow: inset 0 0 3px rgba(51,51,51,0.45); ++-webkit-transition: background 450ms; ++ transition: background 450ms; ++} ++.noUi-origin { ++ border-radius: 2px; ++} ++.noUi-target { ++ border-radius: 4px; ++ border: 1px solid #D3D3D3; ++ box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; ++} ++.noUi-target.noUi-connect { ++ box-shadow: inset 0 0 3px rgba(51,51,51,0.45), 0 3px 6px -5px #BBB; ++} ++ ++/* Handles and cursors; ++ */ ++.noUi-draggable { ++ cursor: w-resize; ++} ++.noUi-vertical .noUi-draggable { ++ cursor: n-resize; ++} ++.noUi-handle { ++ border: 1px solid #D9D9D9; ++ border-radius: 3px; ++ background: #FFF; ++ cursor: default; ++ box-shadow: inset 0 0 1px #FFF, ++ inset 0 1px 7px #EBEBEB, ++ 0 3px 6px -3px #BBB; ++} ++.noUi-active { ++ box-shadow: inset 0 0 1px #FFF, ++ inset 0 1px 7px #DDD, ++ 0 3px 6px -3px #BBB; ++} ++ ++/* Handle stripes; ++ */ ++.noUi-handle:before, ++.noUi-handle:after { ++ content: ""; ++ display: block; ++ position: absolute; ++ height: 14px; ++ width: 1px; ++ background: #E8E7E6; ++ left: 14px; ++ top: 6px; ++} ++.noUi-handle:after { ++ left: 17px; ++} ++.noUi-vertical .noUi-handle:before, ++.noUi-vertical .noUi-handle:after { ++ width: 14px; ++ height: 1px; ++ left: 6px; ++ top: 14px; ++} ++.noUi-vertical .noUi-handle:after { ++ top: 17px; ++} ++ ++/* Disabled state; ++ */ ++[disabled].noUi-connect, ++[disabled] .noUi-connect { ++ background: #B8B8B8; ++} ++[disabled].noUi-origin, ++[disabled] .noUi-handle { ++ cursor: not-allowed; ++} diff --cc debian/missing-sources/nouislider.css/nouislider.pips.css index 0000000,0000000..a337697 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.css/nouislider.pips.css @@@ -1,0 -1,0 +1,93 @@@ ++ ++/* Base; ++ * ++ */ ++.noUi-pips, ++.noUi-pips * { ++-moz-box-sizing: border-box; ++ box-sizing: border-box; ++} ++.noUi-pips { ++ position: absolute; ++ color: #999; ++} ++ ++/* Values; ++ * ++ */ ++.noUi-value { ++ position: absolute; ++ text-align: center; ++} ++.noUi-value-sub { ++ color: #ccc; ++ font-size: 10px; ++} ++ ++/* Markings; ++ * ++ */ ++.noUi-marker { ++ position: absolute; ++ background: #CCC; ++} ++.noUi-marker-sub { ++ background: #AAA; ++} ++.noUi-marker-large { ++ background: #AAA; ++} ++ ++/* Horizontal layout; ++ * ++ */ ++.noUi-pips-horizontal { ++ padding: 10px 0; ++ height: 80px; ++ top: 100%; ++ left: 0; ++ width: 100%; ++} ++.noUi-value-horizontal { ++ -webkit-transform: translate3d(-50%,50%,0); ++ transform: translate3d(-50%,50%,0); ++} ++ ++.noUi-marker-horizontal.noUi-marker { ++ margin-left: -1px; ++ width: 2px; ++ height: 5px; ++} ++.noUi-marker-horizontal.noUi-marker-sub { ++ height: 10px; ++} ++.noUi-marker-horizontal.noUi-marker-large { ++ height: 15px; ++} ++ ++/* Vertical layout; ++ * ++ */ ++.noUi-pips-vertical { ++ padding: 0 10px; ++ height: 100%; ++ top: 0; ++ left: 100%; ++} ++.noUi-value-vertical { ++ -webkit-transform: translate3d(0,-50%,0); ++ transform: translate3d(0,-50%,0); ++ padding-left: 25px; ++} ++ ++.noUi-marker-vertical.noUi-marker { ++ width: 5px; ++ height: 2px; ++ margin-top: -1px; ++} ++.noUi-marker-vertical.noUi-marker-sub { ++ width: 10px; ++} ++.noUi-marker-vertical.noUi-marker-large { ++ width: 15px; ++} diff --cc debian/missing-sources/nouislider.css/nouislider.tooltips.css index 0000000,0000000..19bdf4f new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.css/nouislider.tooltips.css @@@ -1,0 -1,0 +1,22 @@@ ++.noUi-tooltip { ++ display: block; ++ position: absolute; ++ border: 1px solid #D9D9D9; ++ border-radius: 3px; ++ background: #fff; ++ padding: 5px; ++ text-align: center; ++} ++ ++.noUi-horizontal .noUi-handle-lower .noUi-tooltip { ++ top: -32px; ++} ++.noUi-horizontal .noUi-handle-upper .noUi-tooltip { ++ bottom: -32px; ++} ++.noUi-vertical .noUi-handle-lower .noUi-tooltip { ++ left: 120%; ++} ++.noUi-vertical .noUi-handle-upper .noUi-tooltip { ++ right: 120%; ++} diff --cc debian/missing-sources/nouislider.js/constants.js index 0000000,0000000..ccdc255 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/constants.js @@@ -1,0 -1,0 +1,21 @@@ ++ // we provide a function to compute constants instead ++ // of accessing window.* as soon as the module needs it ++ // so that we do not compute anything if not needed ++ function getActions ( ) { ++ ++ // Determine the events to bind. IE11 implements pointerEvents without ++ // a prefix, which breaks compatibility with the IE10 implementation. ++ return window.navigator.pointerEnabled ? { ++ start: 'pointerdown', ++ move: 'pointermove', ++ end: 'pointerup' ++ } : window.navigator.msPointerEnabled ? { ++ start: 'MSPointerDown', ++ move: 'MSPointerMove', ++ end: 'MSPointerUp' ++ } : { ++ start: 'mousedown touchstart', ++ move: 'mousemove touchmove', ++ end: 'mouseup touchend' ++ }; ++ } diff --cc debian/missing-sources/nouislider.js/helpers.js index 0000000,0000000..68005d4 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/helpers.js @@@ -1,0 -1,0 +1,99 @@@ ++ ++ // Removes duplicates from an array. ++ function unique(array) { ++ return array.filter(function(a){ ++ return !this[a] ? this[a] = true : false; ++ }, {}); ++ } ++ ++ // Round a value to the closest 'to'. ++ function closest ( value, to ) { ++ return Math.round(value / to) * to; ++ } ++ ++ // Current position of an element relative to the document. ++ function offset ( elem ) { ++ ++ var rect = elem.getBoundingClientRect(), ++ doc = elem.ownerDocument, ++ docElem = doc.documentElement, ++ pageOffset = getPageOffset(); ++ ++ // getBoundingClientRect contains left scroll in Chrome on Android. ++ // I haven't found a feature detection that proves this. Worst case ++ // scenario on mis-match: the 'tap' feature on horizontal sliders breaks. ++ if ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) { ++ pageOffset.x = 0; ++ } ++ ++ return { ++ top: rect.top + pageOffset.y - docElem.clientTop, ++ left: rect.left + pageOffset.x - docElem.clientLeft ++ }; ++ } ++ ++ // Checks whether a value is numerical. ++ function isNumeric ( a ) { ++ return typeof a === 'number' && !isNaN( a ) && isFinite( a ); ++ } ++ ++ // Sets a class and removes it after [duration] ms. ++ function addClassFor ( element, className, duration ) { ++ addClass(element, className); ++ setTimeout(function(){ ++ removeClass(element, className); ++ }, duration); ++ } ++ ++ // Limits a value to 0 - 100 ++ function limit ( a ) { ++ return Math.max(Math.min(a, 100), 0); ++ } ++ ++ // Wraps a variable as an array, if it isn't one yet. ++ function asArray ( a ) { ++ return Array.isArray(a) ? a : [a]; ++ } ++ ++ // Counts decimals ++ function countDecimals ( numStr ) { ++ var pieces = numStr.split("."); ++ return pieces.length > 1 ? pieces[1].length : 0; ++ } ++ ++ // http://youmightnotneedjquery.com/#add_class ++ function addClass ( el, className ) { ++ if ( el.classList ) { ++ el.classList.add(className); ++ } else { ++ el.className += ' ' + className; ++ } ++ } ++ ++ // http://youmightnotneedjquery.com/#remove_class ++ function removeClass ( el, className ) { ++ if ( el.classList ) { ++ el.classList.remove(className); ++ } else { ++ el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); ++ } ++ } ++ ++ // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/ ++ function hasClass ( el, className ) { ++ return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className); ++ } ++ ++ // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes ++ function getPageOffset ( ) { ++ ++ var supportPageOffset = window.pageXOffset !== undefined, ++ isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"), ++ x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft, ++ y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; ++ ++ return { ++ x: x, ++ y: y ++ }; ++ } diff --cc debian/missing-sources/nouislider.js/interface.js index 0000000,0000000..188125a new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/interface.js @@@ -1,0 -1,0 +1,23 @@@ ++ ++ // Run the standard initializer ++ function initialize ( target, originalOptions ) { ++ ++ if ( !target.nodeName ) { ++ throw new Error('noUiSlider.create requires a single element.'); ++ } ++ ++ // Test the options and create the slider environment; ++ var options = testOptions( originalOptions, target ), ++ slider = closure( target, options, originalOptions ); ++ ++ // Use the public value method to set the start values. ++ slider.set(options.start); ++ ++ target.noUiSlider = slider; ++ return slider; ++ } ++ ++ // Use an object instead of a function for future expansibility; ++ return { ++ create: initialize ++ }; diff --cc debian/missing-sources/nouislider.js/intro.js index 0000000,0000000..be3175e new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/intro.js @@@ -1,0 -1,0 +1,21 @@@ ++(function (factory) { ++ ++ if ( typeof define === 'function' && define.amd ) { ++ ++ // AMD. Register as an anonymous module. ++ define([], factory); ++ ++ } else if ( typeof exports === 'object' ) { ++ ++ // Node/CommonJS ++ module.exports = factory(); ++ ++ } else { ++ ++ // Browser globals ++ window.noUiSlider = factory(); ++ } ++ ++}(function( ){ ++ ++ 'use strict'; diff --cc debian/missing-sources/nouislider.js/options.js index 0000000,0000000..af927bb new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/options.js @@@ -1,0 -1,0 +1,378 @@@ ++/* Every input option is tested and parsed. This'll prevent ++ endless validation in internal methods. These tests are ++ structured with an item for every option available. An ++ option can be marked as required by setting the 'r' flag. ++ The testing function is provided with three arguments: ++ - The provided value for the option; ++ - A reference to the options object; ++ - The name for the option; ++ ++ The testing function returns false when an error is detected, ++ or true when everything is OK. It can also modify the option ++ object, to make sure all values can be correctly looped elsewhere. */ ++ ++ var defaultFormatter = { 'to': function( value ){ ++ return value !== undefined && value.toFixed(2); ++ }, 'from': Number }; ++ ++ function testStep ( parsed, entry ) { ++ ++ if ( !isNumeric( entry ) ) { ++ throw new Error("noUiSlider: 'step' is not numeric."); ++ } ++ ++ // The step option can still be used to set stepping ++ // for linear sliders. Overwritten if set in 'range'. ++ parsed.singleStep = entry; ++ } ++ ++ function testRange ( parsed, entry ) { ++ ++ // Filter incorrect input. ++ if ( typeof entry !== 'object' || Array.isArray(entry) ) { ++ throw new Error("noUiSlider: 'range' is not an object."); ++ } ++ ++ // Catch missing start or end. ++ if ( entry.min === undefined || entry.max === undefined ) { ++ throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'."); ++ } ++ ++ // Catch equal start or end. ++ if ( entry.min === entry.max ) { ++ throw new Error("noUiSlider: 'range' 'min' and 'max' cannot be equal."); ++ } ++ ++ parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep); ++ } ++ ++ function testStart ( parsed, entry ) { ++ ++ entry = asArray(entry); ++ ++ // Validate input. Values aren't tested, as the public .val method ++ // will always provide a valid location. ++ if ( !Array.isArray( entry ) || !entry.length || entry.length > 2 ) { ++ throw new Error("noUiSlider: 'start' option is incorrect."); ++ } ++ ++ // Store the number of handles. ++ parsed.handles = entry.length; ++ ++ // When the slider is initialized, the .val method will ++ // be called with the start options. ++ parsed.start = entry; ++ } ++ ++ function testSnap ( parsed, entry ) { ++ ++ // Enforce 100% stepping within subranges. ++ parsed.snap = entry; ++ ++ if ( typeof entry !== 'boolean' ){ ++ throw new Error("noUiSlider: 'snap' option must be a boolean."); ++ } ++ } ++ ++ function testAnimate ( parsed, entry ) { ++ ++ // Enforce 100% stepping within subranges. ++ parsed.animate = entry; ++ ++ if ( typeof entry !== 'boolean' ){ ++ throw new Error("noUiSlider: 'animate' option must be a boolean."); ++ } ++ } ++ ++ function testAnimationDuration ( parsed, entry ) { ++ ++ parsed.animationDuration = entry; ++ ++ if ( typeof entry !== 'number' ){ ++ throw new Error("noUiSlider: 'animationDuration' option must be a number."); ++ } ++ } ++ ++ function testConnect ( parsed, entry ) { ++ ++ if ( entry === 'lower' && parsed.handles === 1 ) { ++ parsed.connect = 1; ++ } else if ( entry === 'upper' && parsed.handles === 1 ) { ++ parsed.connect = 2; ++ } else if ( entry === true && parsed.handles === 2 ) { ++ parsed.connect = 3; ++ } else if ( entry === false ) { ++ parsed.connect = 0; ++ } else { ++ throw new Error("noUiSlider: 'connect' option doesn't match handle count."); ++ } ++ } ++ ++ function testOrientation ( parsed, entry ) { ++ ++ // Set orientation to an a numerical value for easy ++ // array selection. ++ switch ( entry ){ ++ case 'horizontal': ++ parsed.ort = 0; ++ break; ++ case 'vertical': ++ parsed.ort = 1; ++ break; ++ default: ++ throw new Error("noUiSlider: 'orientation' option is invalid."); ++ } ++ } ++ ++ function testMargin ( parsed, entry ) { ++ ++ if ( !isNumeric(entry) ){ ++ throw new Error("noUiSlider: 'margin' option must be numeric."); ++ } ++ ++ // Issue #582 ++ if ( entry === 0 ) { ++ return; ++ } ++ ++ parsed.margin = parsed.spectrum.getMargin(entry); ++ ++ if ( !parsed.margin ) { ++ throw new Error("noUiSlider: 'margin' option is only supported on linear sliders."); ++ } ++ } ++ ++ function testLimit ( parsed, entry ) { ++ ++ if ( !isNumeric(entry) ){ ++ throw new Error("noUiSlider: 'limit' option must be numeric."); ++ } ++ ++ parsed.limit = parsed.spectrum.getMargin(entry); ++ ++ if ( !parsed.limit ) { ++ throw new Error("noUiSlider: 'limit' option is only supported on linear sliders."); ++ } ++ } ++ ++ function testDirection ( parsed, entry ) { ++ ++ // Set direction as a numerical value for easy parsing. ++ // Invert connection for RTL sliders, so that the proper ++ // handles get the connect/background classes. ++ switch ( entry ) { ++ case 'ltr': ++ parsed.dir = 0; ++ break; ++ case 'rtl': ++ parsed.dir = 1; ++ parsed.connect = [0,2,1,3][parsed.connect]; ++ break; ++ default: ++ throw new Error("noUiSlider: 'direction' option was not recognized."); ++ } ++ } ++ ++ function testBehaviour ( parsed, entry ) { ++ ++ // Make sure the input is a string. ++ if ( typeof entry !== 'string' ) { ++ throw new Error("noUiSlider: 'behaviour' must be a string containing options."); ++ } ++ ++ // Check if the string contains any keywords. ++ // None are required. ++ var tap = entry.indexOf('tap') >= 0, ++ drag = entry.indexOf('drag') >= 0, ++ fixed = entry.indexOf('fixed') >= 0, ++ snap = entry.indexOf('snap') >= 0, ++ hover = entry.indexOf('hover') >= 0; ++ ++ // Fix #472 ++ if ( drag && !parsed.connect ) { ++ throw new Error("noUiSlider: 'drag' behaviour must be used with 'connect': true."); ++ } ++ ++ parsed.events = { ++ tap: tap || snap, ++ drag: drag, ++ fixed: fixed, ++ snap: snap, ++ hover: hover ++ }; ++ } ++ ++ function testTooltips ( parsed, entry ) { ++ ++ var i; ++ ++ if ( entry === false ) { ++ return; ++ } else if ( entry === true ) { ++ ++ parsed.tooltips = []; ++ ++ for ( i = 0; i < parsed.handles; i++ ) { ++ parsed.tooltips.push(true); ++ } ++ ++ } else { ++ ++ parsed.tooltips = asArray(entry); ++ ++ if ( parsed.tooltips.length !== parsed.handles ) { ++ throw new Error("noUiSlider: must pass a formatter for all handles."); ++ } ++ ++ parsed.tooltips.forEach(function(formatter){ ++ if ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) { ++ throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'."); ++ } ++ }); ++ } ++ } ++ ++ function testFormat ( parsed, entry ) { ++ ++ parsed.format = entry; ++ ++ // Any object with a to and from method is supported. ++ if ( typeof entry.to === 'function' && typeof entry.from === 'function' ) { ++ return true; ++ } ++ ++ throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods."); ++ } ++ ++ function testCssPrefix ( parsed, entry ) { ++ ++ if ( entry !== undefined && typeof entry !== 'string' && entry !== false ) { ++ throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`."); ++ } ++ ++ parsed.cssPrefix = entry; ++ } ++ ++ function testCssClasses ( parsed, entry ) { ++ ++ if ( entry !== undefined && typeof entry !== 'object' ) { ++ throw new Error("noUiSlider: 'cssClasses' must be an object."); ++ } ++ ++ if ( typeof parsed.cssPrefix === 'string' ) { ++ parsed.cssClasses = {}; ++ ++ for ( var key in entry ) { ++ if ( !entry.hasOwnProperty(key) ) { continue; } ++ ++ parsed.cssClasses[key] = parsed.cssPrefix + entry[key]; ++ } ++ } else { ++ parsed.cssClasses = entry; ++ } ++ } ++ ++ // Test all developer settings and parse to assumption-safe values. ++ function testOptions ( options ) { ++ ++ // To prove a fix for #537, freeze options here. ++ // If the object is modified, an error will be thrown. ++ // Object.freeze(options); ++ ++ var parsed = { ++ margin: 0, ++ limit: 0, ++ animate: true, ++ animationDuration: 300, ++ format: defaultFormatter ++ }, tests; ++ ++ // Tests are executed in the order they are presented here. ++ tests = { ++ 'step': { r: false, t: testStep }, ++ 'start': { r: true, t: testStart }, ++ 'connect': { r: true, t: testConnect }, ++ 'direction': { r: true, t: testDirection }, ++ 'snap': { r: false, t: testSnap }, ++ 'animate': { r: false, t: testAnimate }, ++ 'animationDuration': { r: false, t: testAnimationDuration }, ++ 'range': { r: true, t: testRange }, ++ 'orientation': { r: false, t: testOrientation }, ++ 'margin': { r: false, t: testMargin }, ++ 'limit': { r: false, t: testLimit }, ++ 'behaviour': { r: true, t: testBehaviour }, ++ 'format': { r: false, t: testFormat }, ++ 'tooltips': { r: false, t: testTooltips }, ++ 'cssPrefix': { r: false, t: testCssPrefix }, ++ 'cssClasses': { r: false, t: testCssClasses } ++ }; ++ ++ var defaults = { ++ 'connect': false, ++ 'direction': 'ltr', ++ 'behaviour': 'tap', ++ 'orientation': 'horizontal', ++ 'cssPrefix' : 'noUi-', ++ 'cssClasses': { ++ target: 'target', ++ base: 'base', ++ origin: 'origin', ++ handle: 'handle', ++ handleLower: 'handle-lower', ++ handleUpper: 'handle-upper', ++ horizontal: 'horizontal', ++ vertical: 'vertical', ++ background: 'background', ++ connect: 'connect', ++ ltr: 'ltr', ++ rtl: 'rtl', ++ draggable: 'draggable', ++ drag: 'state-drag', ++ tap: 'state-tap', ++ active: 'active', ++ stacking: 'stacking', ++ tooltip: 'tooltip', ++ pips: 'pips', ++ pipsHorizontal: 'pips-horizontal', ++ pipsVertical: 'pips-vertical', ++ marker: 'marker', ++ markerHorizontal: 'marker-horizontal', ++ markerVertical: 'marker-vertical', ++ markerNormal: 'marker-normal', ++ markerLarge: 'marker-large', ++ markerSub: 'marker-sub', ++ value: 'value', ++ valueHorizontal: 'value-horizontal', ++ valueVertical: 'value-vertical', ++ valueNormal: 'value-normal', ++ valueLarge: 'value-large', ++ valueSub: 'value-sub' ++ } ++ }; ++ ++ // Run all options through a testing mechanism to ensure correct ++ // input. It should be noted that options might get modified to ++ // be handled properly. E.g. wrapping integers in arrays. ++ Object.keys(tests).forEach(function( name ){ ++ ++ // If the option isn't set, but it is required, throw an error. ++ if ( options[name] === undefined && defaults[name] === undefined ) { ++ ++ if ( tests[name].r ) { ++ throw new Error("noUiSlider: '" + name + "' is required."); ++ } ++ ++ return true; ++ } ++ ++ tests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] ); ++ }); ++ ++ // Forward pips options ++ parsed.pips = options.pips; ++ ++ // Pre-define the styles. ++ parsed.style = parsed.ort ? 'top' : 'left'; ++ ++ return parsed; ++ } diff --cc debian/missing-sources/nouislider.js/outro.js index 0000000,0000000..57d3e48 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/outro.js @@@ -1,0 -1,0 +1,1 @@@ ++})); diff --cc debian/missing-sources/nouislider.js/pips.js index 0000000,0000000..9d56ffd new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/pips.js @@@ -1,0 -1,0 +1,247 @@@ ++ ++ function getGroup ( mode, values, stepped ) { ++ ++ // Use the range. ++ if ( mode === 'range' || mode === 'steps' ) { ++ return scope_Spectrum.xVal; ++ } ++ ++ if ( mode === 'count' ) { ++ ++ // Divide 0 - 100 in 'count' parts. ++ var spread = ( 100 / (values-1) ), v, i = 0; ++ values = []; ++ ++ // List these parts and have them handled as 'positions'. ++ while ((v=i++*spread) <= 100 ) { ++ values.push(v); ++ } ++ ++ mode = 'positions'; ++ } ++ ++ if ( mode === 'positions' ) { ++ ++ // Map all percentages to on-range values. ++ return values.map(function( value ){ ++ return scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value ); ++ }); ++ } ++ ++ if ( mode === 'values' ) { ++ ++ // If the value must be stepped, it needs to be converted to a percentage first. ++ if ( stepped ) { ++ ++ return values.map(function( value ){ ++ ++ // Convert to percentage, apply step, return to value. ++ return scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) ); ++ }); ++ ++ } ++ ++ // Otherwise, we can simply use the values. ++ return values; ++ } ++ } ++ ++ function generateSpread ( density, mode, group ) { ++ ++ function safeIncrement(value, increment) { ++ // Avoid floating point variance by dropping the smallest decimal places. ++ return (value + increment).toFixed(7) / 1; ++ } ++ ++ var originalSpectrumDirection = scope_Spectrum.direction, ++ indexes = {}, ++ firstInRange = scope_Spectrum.xVal[0], ++ lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1], ++ ignoreFirst = false, ++ ignoreLast = false, ++ prevPct = 0; ++ ++ // This function loops the spectrum in an ltr linear fashion, ++ // while the toStepping method is direction aware. Trick it into ++ // believing it is ltr. ++ scope_Spectrum.direction = 0; ++ ++ // Create a copy of the group, sort it and filter away all duplicates. ++ group = unique(group.slice().sort(function(a, b){ return a - b; })); ++ ++ // Make sure the range starts with the first element. ++ if ( group[0] !== firstInRange ) { ++ group.unshift(firstInRange); ++ ignoreFirst = true; ++ } ++ ++ // Likewise for the last one. ++ if ( group[group.length - 1] !== lastInRange ) { ++ group.push(lastInRange); ++ ignoreLast = true; ++ } ++ ++ group.forEach(function ( current, index ) { ++ ++ // Get the current step and the lower + upper positions. ++ var step, i, q, ++ low = current, ++ high = group[index+1], ++ newPct, pctDifference, pctPos, type, ++ steps, realSteps, stepsize; ++ ++ // When using 'steps' mode, use the provided steps. ++ // Otherwise, we'll step on to the next subrange. ++ if ( mode === 'steps' ) { ++ step = scope_Spectrum.xNumSteps[ index ]; ++ } ++ ++ // Default to a 'full' step. ++ if ( !step ) { ++ step = high-low; ++ } ++ ++ // Low can be 0, so test for false. If high is undefined, ++ // we are at the last subrange. Index 0 is already handled. ++ if ( low === false || high === undefined ) { ++ return; ++ } ++ ++ // Find all steps in the subrange. ++ for ( i = low; i <= high; i = safeIncrement(i, step) ) { ++ ++ // Get the percentage value for the current step, ++ // calculate the size for the subrange. ++ newPct = scope_Spectrum.toStepping( i ); ++ pctDifference = newPct - prevPct; ++ ++ steps = pctDifference / density; ++ realSteps = Math.round(steps); ++ ++ // This ratio represents the ammount of percentage-space a point indicates. ++ // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided. ++ // Round the percentage offset to an even number, then divide by two ++ // to spread the offset on both sides of the range. ++ stepsize = pctDifference/realSteps; ++ ++ // Divide all points evenly, adding the correct number to this subrange. ++ // Run up to <= so that 100% gets a point, event if ignoreLast is set. ++ for ( q = 1; q <= realSteps; q += 1 ) { ++ ++ // The ratio between the rounded value and the actual size might be ~1% off. ++ // Correct the percentage offset by the number of points ++ // per subrange. density = 1 will result in 100 points on the ++ // full range, 2 for 50, 4 for 25, etc. ++ pctPos = prevPct + ( q * stepsize ); ++ indexes[pctPos.toFixed(5)] = ['x', 0]; ++ } ++ ++ // Determine the point type. ++ type = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 ); ++ ++ // Enforce the 'ignoreFirst' option by overwriting the type for 0. ++ if ( !index && ignoreFirst ) { ++ type = 0; ++ } ++ ++ if ( !(i === high && ignoreLast)) { ++ // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value. ++ indexes[newPct.toFixed(5)] = [i, type]; ++ } ++ ++ // Update the percentage count. ++ prevPct = newPct; ++ } ++ }); ++ ++ // Reset the spectrum. ++ scope_Spectrum.direction = originalSpectrumDirection; ++ ++ return indexes; ++ } ++ ++ function addMarking ( spread, filterFunc, formatter ) { ++ ++ var element = document.createElement('div'), ++ out = '', ++ valueSizeClasses = [ ++ options.cssClasses.valueNormal, ++ options.cssClasses.valueLarge, ++ options.cssClasses.valueSub ++ ], ++ markerSizeClasses = [ ++ options.cssClasses.markerNormal, ++ options.cssClasses.markerLarge, ++ options.cssClasses.markerSub ++ ], ++ valueOrientationClasses = [ ++ options.cssClasses.valueHorizontal, ++ options.cssClasses.valueVertical ++ ], ++ markerOrientationClasses = [ ++ options.cssClasses.markerHorizontal, ++ options.cssClasses.markerVertical ++ ]; ++ ++ addClass(element, options.cssClasses.pips); ++ addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical); ++ ++ function getClasses( type, source ){ ++ var a = source === options.cssClasses.value, ++ orientationClasses = a ? valueOrientationClasses : markerOrientationClasses, ++ sizeClasses = a ? valueSizeClasses : markerSizeClasses; ++ ++ return source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type]; ++ } ++ ++ function getTags( offset, source, values ) { ++ return 'class="' + getClasses(values[1], source) + '" style="' + options.style + ': ' + offset + '%"'; ++ } ++ ++ function addSpread ( offset, values ){ ++ ++ if ( scope_Spectrum.direction ) { ++ offset = 100 - offset; ++ } ++ ++ // Apply the filter function, if it is set. ++ values[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1]; ++ ++ // Add a marker for every point ++ out += '
'; ++ ++ // Values are only appended for points marked '1' or '2'. ++ if ( values[1] ) { ++ out += '
' + formatter.to(values[0]) + '
'; ++ } ++ } ++ ++ // Append all points. ++ Object.keys(spread).forEach(function(a){ ++ addSpread(a, spread[a]); ++ }); ++ ++ element.innerHTML = out; ++ ++ return element; ++ } ++ ++ function pips ( grid ) { ++ ++ var mode = grid.mode, ++ density = grid.density || 1, ++ filter = grid.filter || false, ++ values = grid.values || false, ++ stepped = grid.stepped || false, ++ group = getGroup( mode, values, stepped ), ++ spread = generateSpread( density, mode, group ), ++ format = grid.format || { ++ to: Math.round ++ }; ++ ++ return scope_Target.appendChild(addMarking( ++ spread, ++ filter, ++ format ++ )); ++ } diff --cc debian/missing-sources/nouislider.js/range.js index 0000000,0000000..475433c new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/range.js @@@ -1,0 -1,0 +1,272 @@@ ++ ++// Value calculation ++ ++ // Determine the size of a sub-range in relation to a full range. ++ function subRangeRatio ( pa, pb ) { ++ return (100 / (pb - pa)); ++ } ++ ++ // (percentage) How many percent is this value of this range? ++ function fromPercentage ( range, value ) { ++ return (value * 100) / ( range[1] - range[0] ); ++ } ++ ++ // (percentage) Where is this value on this range? ++ function toPercentage ( range, value ) { ++ return fromPercentage( range, range[0] < 0 ? ++ value + Math.abs(range[0]) : ++ value - range[0] ); ++ } ++ ++ // (value) How much is this percentage on this range? ++ function isPercentage ( range, value ) { ++ return ((value * ( range[1] - range[0] )) / 100) + range[0]; ++ } ++ ++ ++// Range conversion ++ ++ function getJ ( value, arr ) { ++ ++ var j = 1; ++ ++ while ( value >= arr[j] ){ ++ j += 1; ++ } ++ ++ return j; ++ } ++ ++ // (percentage) Input a value, find where, on a scale of 0-100, it applies. ++ function toStepping ( xVal, xPct, value ) { ++ ++ if ( value >= xVal.slice(-1)[0] ){ ++ return 100; ++ } ++ ++ var j = getJ( value, xVal ), va, vb, pa, pb; ++ ++ va = xVal[j-1]; ++ vb = xVal[j]; ++ pa = xPct[j-1]; ++ pb = xPct[j]; ++ ++ return pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb)); ++ } ++ ++ // (value) Input a percentage, find where it is on the specified range. ++ function fromStepping ( xVal, xPct, value ) { ++ ++ // There is no range group that fits 100 ++ if ( value >= 100 ){ ++ return xVal.slice(-1)[0]; ++ } ++ ++ var j = getJ( value, xPct ), va, vb, pa, pb; ++ ++ va = xVal[j-1]; ++ vb = xVal[j]; ++ pa = xPct[j-1]; ++ pb = xPct[j]; ++ ++ return isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb)); ++ } ++ ++ // (percentage) Get the step that applies at a certain value. ++ function getStep ( xPct, xSteps, snap, value ) { ++ ++ if ( value === 100 ) { ++ return value; ++ } ++ ++ var j = getJ( value, xPct ), a, b; ++ ++ // If 'snap' is set, steps are used as fixed points on the slider. ++ if ( snap ) { ++ ++ a = xPct[j-1]; ++ b = xPct[j]; ++ ++ // Find the closest position, a or b. ++ if ((value - a) > ((b-a)/2)){ ++ return b; ++ } ++ ++ return a; ++ } ++ ++ if ( !xSteps[j-1] ){ ++ return value; ++ } ++ ++ return xPct[j-1] + closest( ++ value - xPct[j-1], ++ xSteps[j-1] ++ ); ++ } ++ ++ ++// Entry parsing ++ ++ function handleEntryPoint ( index, value, that ) { ++ ++ var percentage; ++ ++ // Wrap numerical input in an array. ++ if ( typeof value === "number" ) { ++ value = [value]; ++ } ++ ++ // Reject any invalid input, by testing whether value is an array. ++ if ( Object.prototype.toString.call( value ) !== '[object Array]' ){ ++ throw new Error("noUiSlider: 'range' contains invalid value."); ++ } ++ ++ // Covert min/max syntax to 0 and 100. ++ if ( index === 'min' ) { ++ percentage = 0; ++ } else if ( index === 'max' ) { ++ percentage = 100; ++ } else { ++ percentage = parseFloat( index ); ++ } ++ ++ // Check for correct input. ++ if ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) { ++ throw new Error("noUiSlider: 'range' value isn't numeric."); ++ } ++ ++ // Store values. ++ that.xPct.push( percentage ); ++ that.xVal.push( value[0] ); ++ ++ // NaN will evaluate to false too, but to keep ++ // logging clear, set step explicitly. Make sure ++ // not to override the 'step' setting with false. ++ if ( !percentage ) { ++ if ( !isNaN( value[1] ) ) { ++ that.xSteps[0] = value[1]; ++ } ++ } else { ++ that.xSteps.push( isNaN(value[1]) ? false : value[1] ); ++ } ++ } ++ ++ function handleStepPoint ( i, n, that ) { ++ ++ // Ignore 'false' stepping. ++ if ( !n ) { ++ return true; ++ } ++ ++ // Factor to range ratio ++ that.xSteps[i] = fromPercentage([ ++ that.xVal[i] ++ ,that.xVal[i+1] ++ ], n) / subRangeRatio ( ++ that.xPct[i], ++ that.xPct[i+1] ); ++ } ++ ++ ++// Interface ++ ++ // The interface to Spectrum handles all direction-based ++ // conversions, so the above values are unaware. ++ ++ function Spectrum ( entry, snap, direction, singleStep ) { ++ ++ this.xPct = []; ++ this.xVal = []; ++ this.xSteps = [ singleStep || false ]; ++ this.xNumSteps = [ false ]; ++ ++ this.snap = snap; ++ this.direction = direction; ++ ++ var index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ]; ++ ++ // Map the object keys to an array. ++ for ( index in entry ) { ++ if ( entry.hasOwnProperty(index) ) { ++ ordered.push([entry[index], index]); ++ } ++ } ++ ++ // Sort all entries by value (numeric sort). ++ if ( ordered.length && typeof ordered[0][0] === "object" ) { ++ ordered.sort(function(a, b) { return a[0][0] - b[0][0]; }); ++ } else { ++ ordered.sort(function(a, b) { return a[0] - b[0]; }); ++ } ++ ++ ++ // Convert all entries to subranges. ++ for ( index = 0; index < ordered.length; index++ ) { ++ handleEntryPoint(ordered[index][1], ordered[index][0], this); ++ } ++ ++ // Store the actual step values. ++ // xSteps is sorted in the same order as xPct and xVal. ++ this.xNumSteps = this.xSteps.slice(0); ++ ++ // Convert all numeric steps to the percentage of the subrange they represent. ++ for ( index = 0; index < this.xNumSteps.length; index++ ) { ++ handleStepPoint(index, this.xNumSteps[index], this); ++ } ++ } ++ ++ Spectrum.prototype.getMargin = function ( value ) { ++ return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false; ++ }; ++ ++ Spectrum.prototype.toStepping = function ( value ) { ++ ++ value = toStepping( this.xVal, this.xPct, value ); ++ ++ // Invert the value if this is a right-to-left slider. ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ return value; ++ }; ++ ++ Spectrum.prototype.fromStepping = function ( value ) { ++ ++ // Invert the value if this is a right-to-left slider. ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ return fromStepping( this.xVal, this.xPct, value ); ++ }; ++ ++ Spectrum.prototype.getStep = function ( value ) { ++ ++ // Find the proper step for rtl sliders by search in inverse direction. ++ // Fixes issue #262. ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ value = getStep(this.xPct, this.xSteps, this.snap, value ); ++ ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ return value; ++ }; ++ ++ Spectrum.prototype.getApplicableStep = function ( value ) { ++ ++ // If the value is 100%, return the negative step twice. ++ var j = getJ(value, this.xPct), offset = value === 100 ? 2 : 1; ++ return [this.xNumSteps[j-2], this.xVal[j-offset], this.xNumSteps[j-offset]]; ++ }; ++ ++ // Outside testing ++ Spectrum.prototype.convert = function ( value ) { ++ return this.getStep(this.toStepping(value)); ++ }; diff --cc debian/missing-sources/nouislider.js/scope.js index 0000000,0000000..d8f11eb new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope.js @@@ -1,0 -1,0 +1,312 @@@ ++ ++ // Test suggested values and apply margin, step. ++ function setHandle ( handle, to, noLimitOption ) { ++ ++ var trigger = handle !== scope_Handles[0] ? 1 : 0, ++ lowerMargin = scope_Locations[0] + options.margin, ++ upperMargin = scope_Locations[1] - options.margin, ++ lowerLimit = scope_Locations[0] + options.limit, ++ upperLimit = scope_Locations[1] - options.limit; ++ ++ // For sliders with multiple handles, ++ // limit movement to the other handle. ++ // Apply the margin option by adding it to the handle positions. ++ if ( scope_Handles.length > 1 ) { ++ to = trigger ? Math.max( to, lowerMargin ) : Math.min( to, upperMargin ); ++ } ++ ++ // The limit option has the opposite effect, limiting handles to a ++ // maximum distance from another. Limit must be > 0, as otherwise ++ // handles would be unmoveable. 'noLimitOption' is set to 'false' ++ // for the .val() method, except for pass 4/4. ++ if ( noLimitOption !== false && options.limit && scope_Handles.length > 1 ) { ++ to = trigger ? Math.min ( to, lowerLimit ) : Math.max( to, upperLimit ); ++ } ++ ++ // Handle the step option. ++ to = scope_Spectrum.getStep( to ); ++ ++ // Limit percentage to the 0 - 100 range ++ to = limit(to); ++ ++ // Return false if handle can't move ++ if ( to === scope_Locations[trigger] ) { ++ return false; ++ } ++ ++ // Set the handle to the new position. ++ // Use requestAnimationFrame for efficient painting. ++ // No significant effect in Chrome, Edge sees dramatic ++ // performace improvements. ++ if ( window.requestAnimationFrame ) { ++ window.requestAnimationFrame(function(){ ++ handle.style[options.style] = to + '%'; ++ }); ++ } else { ++ handle.style[options.style] = to + '%'; ++ } ++ ++ // Force proper handle stacking ++ if ( !handle.previousSibling ) { ++ removeClass(handle, options.cssClasses.stacking); ++ if ( to > 50 ) { ++ addClass(handle, options.cssClasses.stacking); ++ } ++ } ++ ++ // Update locations. ++ scope_Locations[trigger] = to; ++ ++ // Convert the value to the slider stepping/range. ++ scope_Values[trigger] = scope_Spectrum.fromStepping( to ); ++ ++ fireEvent('update', trigger); ++ ++ return true; ++ } ++ ++ // Loop values from value method and apply them. ++ function setValues ( count, values ) { ++ ++ var i, trigger, to; ++ ++ // With the limit option, we'll need another limiting pass. ++ if ( options.limit ) { ++ count += 1; ++ } ++ ++ // If there are multiple handles to be set run the setting ++ // mechanism twice for the first handle, to make sure it ++ // can be bounced of the second one properly. ++ for ( i = 0; i < count; i += 1 ) { ++ ++ trigger = i%2; ++ ++ // Get the current argument from the array. ++ to = values[trigger]; ++ ++ // Setting with null indicates an 'ignore'. ++ // Inputting 'false' is invalid. ++ if ( to !== null && to !== false ) { ++ ++ // If a formatted number was passed, attemt to decode it. ++ if ( typeof to === 'number' ) { ++ to = String(to); ++ } ++ ++ to = options.format.from( to ); ++ ++ // Request an update for all links if the value was invalid. ++ // Do so too if setting the handle fails. ++ if ( to === false || isNaN(to) || setHandle( scope_Handles[trigger], scope_Spectrum.toStepping( to ), i === (3 - options.dir) ) === false ) { ++ fireEvent('update', trigger); ++ } ++ } ++ } ++ } ++ ++ // Set the slider value. ++ function valueSet ( input, fireSetEvent ) { ++ ++ var count, values = asArray( input ), i; ++ ++ // Event fires by default ++ fireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent); ++ ++ // The RTL settings is implemented by reversing the front-end, ++ // internal mechanisms are the same. ++ if ( options.dir && options.handles > 1 ) { ++ values.reverse(); ++ } ++ ++ // Animation is optional. ++ // Make sure the initial values where set before using animated placement. ++ if ( options.animate && scope_Locations[0] !== -1 ) { ++ addClassFor( scope_Target, options.cssClasses.tap, options.animationDuration ); ++ } ++ ++ // Determine how often to set the handles. ++ count = scope_Handles.length > 1 ? 3 : 1; ++ ++ if ( values.length === 1 ) { ++ count = 1; ++ } ++ ++ setValues ( count, values ); ++ ++ // Fire the 'set' event for both handles. ++ for ( i = 0; i < scope_Handles.length; i++ ) { ++ ++ // Fire the event only for handles that received a new value, as per #579 ++ if ( values[i] !== null && fireSetEvent ) { ++ fireEvent('set', i); ++ } ++ } ++ } ++ ++ // Get the slider value. ++ function valueGet ( ) { ++ ++ var i, retour = []; ++ ++ // Get the value from all handles. ++ for ( i = 0; i < options.handles; i += 1 ){ ++ retour[i] = options.format.to( scope_Values[i] ); ++ } ++ ++ return inSliderOrder( retour ); ++ } ++ ++ // Removes classes from the root and empties it. ++ function destroy ( ) { ++ ++ for ( var key in options.cssClasses ) { ++ if ( !options.cssClasses.hasOwnProperty(key) ) { continue; } ++ removeClass(scope_Target, options.cssClasses[key]); ++ } ++ ++ while (scope_Target.firstChild) { ++ scope_Target.removeChild(scope_Target.firstChild); ++ } ++ ++ delete scope_Target.noUiSlider; ++ } ++ ++ // Get the current step size for the slider. ++ function getCurrentStep ( ) { ++ ++ // Check all locations, map them to their stepping point. ++ // Get the step point, then find it in the input list. ++ var retour = scope_Locations.map(function( location, index ){ ++ ++ var step = scope_Spectrum.getApplicableStep( location ), ++ ++ // As per #391, the comparison for the decrement step can have some rounding issues. ++ // Round the value to the precision used in the step. ++ stepDecimals = countDecimals(String(step[2])), ++ ++ // Get the current numeric value ++ value = scope_Values[index], ++ ++ // To move the slider 'one step up', the current step value needs to be added. ++ // Use null if we are at the maximum slider value. ++ increment = location === 100 ? null : step[2], ++ ++ // Going 'one step down' might put the slider in a different sub-range, so we ++ // need to switch between the current or the previous step. ++ prev = Number((value - step[2]).toFixed(stepDecimals)), ++ ++ // If the value fits the step, return the current step value. Otherwise, use the ++ // previous step. Return null if the slider is at its minimum value. ++ decrement = location === 0 ? null : (prev >= step[1]) ? step[2] : (step[0] || false); ++ ++ return [decrement, increment]; ++ }); ++ ++ // Return values in the proper order. ++ return inSliderOrder( retour ); ++ } ++ ++ // Attach an event to this slider, possibly including a namespace ++ function bindEvent ( namespacedEvent, callback ) { ++ scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || []; ++ scope_Events[namespacedEvent].push(callback); ++ ++ // If the event bound is 'update,' fire it immediately for all handles. ++ if ( namespacedEvent.split('.')[0] === 'update' ) { ++ scope_Handles.forEach(function(a, index){ ++ fireEvent('update', index); ++ }); ++ } ++ } ++ ++ // Undo attachment of event ++ function removeEvent ( namespacedEvent ) { ++ ++ var event = namespacedEvent && namespacedEvent.split('.')[0], ++ namespace = event && namespacedEvent.substring(event.length); ++ ++ Object.keys(scope_Events).forEach(function( bind ){ ++ ++ var tEvent = bind.split('.')[0], ++ tNamespace = bind.substring(tEvent.length); ++ ++ if ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) { ++ delete scope_Events[bind]; ++ } ++ }); ++ } ++ ++ // Updateable: margin, limit, step, range, animate, snap ++ function updateOptions ( optionsToUpdate, fireSetEvent ) { ++ ++ // Spectrum is created using the range, snap, direction and step options. ++ // 'snap' and 'step' can be updated, 'direction' cannot, due to event binding. ++ // If 'snap' and 'step' are not passed, they should remain unchanged. ++ var v = valueGet(), newOptions = testOptions({ ++ start: [0, 0], ++ margin: optionsToUpdate.margin, ++ limit: optionsToUpdate.limit, ++ step: optionsToUpdate.step === undefined ? options.singleStep : optionsToUpdate.step, ++ range: optionsToUpdate.range, ++ animate: optionsToUpdate.animate, ++ snap: optionsToUpdate.snap === undefined ? options.snap : optionsToUpdate.snap ++ }); ++ ++ ['margin', 'limit', 'range', 'animate'].forEach(function(name){ ++ ++ // Only change options that we're actually passed to update. ++ if ( optionsToUpdate[name] !== undefined ) { ++ options[name] = optionsToUpdate[name]; ++ } ++ }); ++ ++ // Save current spectrum direction as testOptions in testRange call ++ // doesn't rely on current direction ++ newOptions.spectrum.direction = scope_Spectrum.direction; ++ scope_Spectrum = newOptions.spectrum; ++ ++ // Invalidate the current positioning so valueSet forces an update. ++ scope_Locations = [-1, -1]; ++ valueSet(optionsToUpdate.start || v, fireSetEvent); ++ } ++ ++ ++ // Throw an error if the slider was already initialized. ++ if ( scope_Target.noUiSlider ) { ++ throw new Error('Slider was already initialized.'); ++ } ++ ++ // Create the base element, initialise HTML and set classes. ++ // Add handles and links. ++ scope_Base = addSlider( options.dir, options.ort, scope_Target ); ++ scope_Handles = addHandles( options.handles, options.dir, scope_Base ); ++ ++ // Set the connect classes. ++ addConnection ( options.connect, scope_Target, scope_Handles ); ++ ++ if ( options.pips ) { ++ pips(options.pips); ++ } ++ ++ if ( options.tooltips ) { ++ tooltips(); ++ } ++ ++ scope_Self = { ++ destroy: destroy, ++ steps: getCurrentStep, ++ on: bindEvent, ++ off: removeEvent, ++ get: valueGet, ++ set: valueSet, ++ updateOptions: updateOptions, ++ options: originalOptions, // Issue #600 ++ target: scope_Target, // Issue #597 ++ pips: pips // Issue #594 ++ }; ++ ++ // Attach user events. ++ events( options.events ); ++ ++ return scope_Self; diff --cc debian/missing-sources/nouislider.js/scope_end.js index 0000000,0000000..5c34318 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_end.js @@@ -1,0 -1,0 +1,1 @@@ ++} diff --cc debian/missing-sources/nouislider.js/scope_events.js index 0000000,0000000..158c9f2 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_events.js @@@ -1,0 -1,0 +1,316 @@@ ++ ++ // Handler for attaching events trough a proxy. ++ function attach ( events, element, callback, data ) { ++ ++ // This function can be used to 'filter' events to the slider. ++ // element is a node, not a nodeList ++ ++ var method = function ( e ){ ++ ++ if ( scope_Target.hasAttribute('disabled') ) { ++ return false; ++ } ++ ++ // Stop if an active 'tap' transition is taking place. ++ if ( hasClass(scope_Target, options.cssClasses.tap) ) { ++ return false; ++ } ++ ++ e = fixEvent(e, data.pageOffset); ++ ++ // Ignore right or middle clicks on start #454 ++ if ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) { ++ return false; ++ } ++ ++ // Ignore right or middle clicks on start #454 ++ if ( data.hover && e.buttons ) { ++ return false; ++ } ++ ++ e.calcPoint = e.points[ options.ort ]; ++ ++ // Call the event handler with the event [ and additional data ]. ++ callback ( e, data ); ++ ++ }, methods = []; ++ ++ // Bind a closure on the target for every event type. ++ events.split(' ').forEach(function( eventName ){ ++ element.addEventListener(eventName, method, false); ++ methods.push([eventName, method]); ++ }); ++ ++ return methods; ++ } ++ ++ // Handle movement on document for handle and range drag. ++ function move ( event, data ) { ++ ++ // Fix #498 ++ // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty). ++ // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero ++ // IE9 has .buttons and .which zero on mousemove. ++ // Firefox breaks the spec MDN defines. ++ if ( navigator.appVersion.indexOf("MSIE 9") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) { ++ return end(event, data); ++ } ++ ++ var handles = data.handles || scope_Handles, positions, state = false, ++ proposal = ((event.calcPoint - data.start) * 100) / data.baseSize, ++ handleNumber = handles[0] === scope_Handles[0] ? 0 : 1, i; ++ ++ // Calculate relative positions for the handles. ++ positions = getPositions( proposal, data.positions, handles.length > 1); ++ ++ state = setHandle ( handles[0], positions[handleNumber], handles.length === 1 ); ++ ++ if ( handles.length > 1 ) { ++ ++ state = setHandle ( handles[1], positions[handleNumber?0:1], false ) || state; ++ ++ if ( state ) { ++ // fire for both handles ++ for ( i = 0; i < data.handles.length; i++ ) { ++ fireEvent('slide', i); ++ } ++ } ++ } else if ( state ) { ++ // Fire for a single handle ++ fireEvent('slide', handleNumber); ++ } ++ } ++ ++ // Unbind move events on document, call callbacks. ++ function end ( event, data ) { ++ ++ // The handle is no longer active, so remove the class. ++ var active = scope_Base.querySelector( '.' + options.cssClasses.active ), ++ handleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1; ++ ++ if ( active !== null ) { ++ removeClass(active, options.cssClasses.active); ++ } ++ ++ // Remove cursor styles and text-selection events bound to the body. ++ if ( event.cursor ) { ++ document.body.style.cursor = ''; ++ document.body.removeEventListener('selectstart', document.body.noUiListener); ++ } ++ ++ var d = document.documentElement; ++ ++ // Unbind the move and end events, which are added on 'start'. ++ d.noUiListeners.forEach(function( c ) { ++ d.removeEventListener(c[0], c[1]); ++ }); ++ ++ // Remove dragging class. ++ removeClass(scope_Target, options.cssClasses.drag); ++ ++ // Fire the change and set events. ++ fireEvent('set', handleNumber); ++ fireEvent('change', handleNumber); ++ ++ // If this is a standard handle movement, fire the end event. ++ if ( data.handleNumber !== undefined ) { ++ fireEvent('end', data.handleNumber); ++ } ++ } ++ ++ // Fire 'end' when a mouse or pen leaves the document. ++ function documentLeave ( event, data ) { ++ if ( event.type === "mouseout" && event.target.nodeName === "HTML" && event.relatedTarget === null ){ ++ end ( event, data ); ++ } ++ } ++ ++ // Bind move events on document. ++ function start ( event, data ) { ++ ++ var d = document.documentElement; ++ ++ // Mark the handle as 'active' so it can be styled. ++ if ( data.handles.length === 1 ) { ++ // Support 'disabled' handles ++ if ( data.handles[0].hasAttribute('disabled') ) { ++ return false; ++ } ++ ++ addClass(data.handles[0].children[0], options.cssClasses.active); ++ } ++ ++ // Fix #551, where a handle gets selected instead of dragged. ++ event.preventDefault(); ++ ++ // A drag should never propagate up to the 'tap' event. ++ event.stopPropagation(); ++ ++ // Attach the move and end events. ++ var moveEvent = attach(actions.move, d, move, { ++ start: event.calcPoint, ++ baseSize: baseSize(), ++ pageOffset: event.pageOffset, ++ handles: data.handles, ++ handleNumber: data.handleNumber, ++ buttonsProperty: event.buttons, ++ positions: [ ++ scope_Locations[0], ++ scope_Locations[scope_Handles.length - 1] ++ ] ++ }), endEvent = attach(actions.end, d, end, { ++ handles: data.handles, ++ handleNumber: data.handleNumber ++ }); ++ ++ var outEvent = attach("mouseout", d, documentLeave, { ++ handles: data.handles, ++ handleNumber: data.handleNumber ++ }); ++ ++ d.noUiListeners = moveEvent.concat(endEvent, outEvent); ++ ++ // Text selection isn't an issue on touch devices, ++ // so adding cursor styles can be skipped. ++ if ( event.cursor ) { ++ ++ // Prevent the 'I' cursor and extend the range-drag cursor. ++ document.body.style.cursor = getComputedStyle(event.target).cursor; ++ ++ // Mark the target with a dragging state. ++ if ( scope_Handles.length > 1 ) { ++ addClass(scope_Target, options.cssClasses.drag); ++ } ++ ++ var f = function(){ ++ return false; ++ }; ++ ++ document.body.noUiListener = f; ++ ++ // Prevent text selection when dragging the handles. ++ document.body.addEventListener('selectstart', f, false); ++ } ++ ++ if ( data.handleNumber !== undefined ) { ++ fireEvent('start', data.handleNumber); ++ } ++ } ++ ++ // Move closest handle to tapped location. ++ function tap ( event ) { ++ ++ var location = event.calcPoint, total = 0, handleNumber, to; ++ ++ // The tap event shouldn't propagate up and cause 'edge' to run. ++ event.stopPropagation(); ++ ++ // Add up the handle offsets. ++ scope_Handles.forEach(function(a){ ++ total += offset(a)[ options.style ]; ++ }); ++ ++ // Find the handle closest to the tapped position. ++ handleNumber = ( location < total/2 || scope_Handles.length === 1 ) ? 0 : 1; ++ ++ // Check if handler is not disablet if yes set number to the next handler ++ if (scope_Handles[handleNumber].hasAttribute('disabled')) { ++ handleNumber = handleNumber ? 0 : 1; ++ } ++ ++ location -= offset(scope_Base)[ options.style ]; ++ ++ // Calculate the new position. ++ to = ( location * 100 ) / baseSize(); ++ ++ if ( !options.events.snap ) { ++ // Flag the slider as it is now in a transitional state. ++ // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that. ++ addClassFor( scope_Target, options.cssClasses.tap, options.animationDuration ); ++ } ++ ++ // Support 'disabled' handles ++ if ( scope_Handles[handleNumber].hasAttribute('disabled') ) { ++ return false; ++ } ++ ++ // Find the closest handle and calculate the tapped point. ++ // The set handle to the new position. ++ setHandle( scope_Handles[handleNumber], to ); ++ ++ fireEvent('slide', handleNumber, true); ++ fireEvent('set', handleNumber, true); ++ fireEvent('change', handleNumber, true); ++ ++ if ( options.events.snap ) { ++ start(event, { handles: [scope_Handles[handleNumber]] }); ++ } ++ } ++ ++ // Fires a 'hover' event for a hovered mouse/pen position. ++ function hover ( event ) { ++ ++ var location = event.calcPoint - offset(scope_Base)[ options.style ], ++ to = scope_Spectrum.getStep(( location * 100 ) / baseSize()), ++ value = scope_Spectrum.fromStepping( to ); ++ ++ Object.keys(scope_Events).forEach(function( targetEvent ) { ++ if ( 'hover' === targetEvent.split('.')[0] ) { ++ scope_Events[targetEvent].forEach(function( callback ) { ++ callback.call( scope_Self, value ); ++ }); ++ } ++ }); ++ } ++ ++ // Attach events to several slider parts. ++ function events ( behaviour ) { ++ ++ // Attach the standard drag event to the handles. ++ if ( !behaviour.fixed ) { ++ ++ scope_Handles.forEach(function( handle, index ){ ++ ++ // These events are only bound to the visual handle ++ // element, not the 'real' origin element. ++ attach ( actions.start, handle.children[0], start, { ++ handles: [ handle ], ++ handleNumber: index ++ }); ++ }); ++ } ++ ++ // Attach the tap event to the slider base. ++ if ( behaviour.tap ) { ++ ++ attach ( actions.start, scope_Base, tap, { ++ handles: scope_Handles ++ }); ++ } ++ ++ // Fire hover events ++ if ( behaviour.hover ) { ++ attach ( actions.move, scope_Base, hover, { hover: true } ); ++ } ++ ++ // Make the range draggable. ++ if ( behaviour.drag ){ ++ ++ var drag = [scope_Base.querySelector( '.' + options.cssClasses.connect )]; ++ addClass(drag[0], options.cssClasses.draggable); ++ ++ // When the range is fixed, the entire range can ++ // be dragged by the handles. The handle in the first ++ // origin will propagate the start event upward, ++ // but it needs to be bound manually on the other. ++ if ( behaviour.fixed ) { ++ drag.push(scope_Handles[(drag[0] === scope_Handles[0] ? 1 : 0)].children[0]); ++ } ++ ++ drag.forEach(function( element ) { ++ attach ( actions.start, element, start, { ++ handles: scope_Handles ++ }); ++ }); ++ } ++ } diff --cc debian/missing-sources/nouislider.js/scope_helpers.js index 0000000,0000000..e7759f6 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_helpers.js @@@ -1,0 -1,0 +1,63 @@@ ++ ++ // Shorthand for base dimensions. ++ function baseSize ( ) { ++ var rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort]; ++ return options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]); ++ } ++ ++ // External event handling ++ function fireEvent ( event, handleNumber, tap ) { ++ ++ var i; ++ ++ // During initialization, do not fire events. ++ for ( i = 0; i < options.handles; i++ ) { ++ if ( scope_Locations[i] === -1 ) { ++ return; ++ } ++ } ++ ++ if ( handleNumber !== undefined && options.handles !== 1 ) { ++ handleNumber = Math.abs(handleNumber - options.dir); ++ } ++ ++ Object.keys(scope_Events).forEach(function( targetEvent ) { ++ ++ var eventType = targetEvent.split('.')[0]; ++ ++ if ( event === eventType ) { ++ scope_Events[targetEvent].forEach(function( callback ) { ++ ++ callback.call( ++ // Use the slider public API as the scope ('this') ++ scope_Self, ++ // Return values as array, so arg_1[arg_2] is always valid. ++ asArray(valueGet()), ++ // Handle index, 0 or 1 ++ handleNumber, ++ // Unformatted slider values ++ asArray(inSliderOrder(Array.prototype.slice.call(scope_Values))), ++ // Event is fired by tap, true or false ++ tap || false, ++ // Left offset of the handle, in relation to the slider ++ scope_Locations ++ ); ++ }); ++ } ++ }); ++ } ++ ++ // Returns the input array, respecting the slider direction configuration. ++ function inSliderOrder ( values ) { ++ ++ // If only one handle is used, return a single value. ++ if ( values.length === 1 ){ ++ return values[0]; ++ } ++ ++ if ( options.dir ) { ++ return values.reverse(); ++ } ++ ++ return values; ++ } diff --cc debian/missing-sources/nouislider.js/scope_start.js index 0000000,0000000..79a904b new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_start.js @@@ -1,0 -1,0 +1,13 @@@ ++ ++function closure ( target, options, originalOptions ){ ++ var ++ actions = getActions( ), ++ // All variables local to 'closure' are prefixed with 'scope_' ++ scope_Target = target, ++ scope_Locations = [-1, -1], ++ scope_Base, ++ scope_Handles, ++ scope_Spectrum = options.spectrum, ++ scope_Values = [], ++ scope_Events = {}, ++ scope_Self; diff --cc debian/missing-sources/nouislider.js/structure.js index 0000000,0000000..36a5e36 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/structure.js @@@ -1,0 -1,0 +1,143 @@@ ++ ++ // Delimit proposed values for handle positions. ++ function getPositions ( a, b, delimit ) { ++ ++ // Add movement to current position. ++ var c = a + b[0], d = a + b[1]; ++ ++ // Only alter the other position on drag, ++ // not on standard sliding. ++ if ( delimit ) { ++ if ( c < 0 ) { ++ d += Math.abs(c); ++ } ++ if ( d > 100 ) { ++ c -= ( d - 100 ); ++ } ++ ++ // Limit values to 0 and 100. ++ return [limit(c), limit(d)]; ++ } ++ ++ return [c,d]; ++ } ++ ++ // Provide a clean event with standardized offset values. ++ function fixEvent ( e, pageOffset ) { ++ ++ // Prevent scrolling and panning on touch events, while ++ // attempting to slide. The tap event also depends on this. ++ e.preventDefault(); ++ ++ // Filter the event to register the type, which can be ++ // touch, mouse or pointer. Offset changes need to be ++ // made on an event specific basis. ++ var touch = e.type.indexOf('touch') === 0, ++ mouse = e.type.indexOf('mouse') === 0, ++ pointer = e.type.indexOf('pointer') === 0, ++ x,y, event = e; ++ ++ // IE10 implemented pointer events with a prefix; ++ if ( e.type.indexOf('MSPointer') === 0 ) { ++ pointer = true; ++ } ++ ++ if ( touch ) { ++ // noUiSlider supports one movement at a time, ++ // so we can select the first 'changedTouch'. ++ x = e.changedTouches[0].pageX; ++ y = e.changedTouches[0].pageY; ++ } ++ ++ pageOffset = pageOffset || getPageOffset(); ++ ++ if ( mouse || pointer ) { ++ x = e.clientX + pageOffset.x; ++ y = e.clientY + pageOffset.y; ++ } ++ ++ event.pageOffset = pageOffset; ++ event.points = [x, y]; ++ event.cursor = mouse || pointer; // Fix #435 ++ ++ return event; ++ } ++ ++ // Append a handle to the base. ++ function addHandle ( direction, index ) { ++ ++ var origin = document.createElement('div'), ++ handle = document.createElement('div'), ++ classModifier = [options.cssClasses.handleLower, options.cssClasses.handleUpper]; ++ ++ if ( direction ) { ++ classModifier.reverse(); ++ } ++ ++ addClass(handle, options.cssClasses.handle); ++ addClass(handle, classModifier[index]); ++ ++ addClass(origin, options.cssClasses.origin); ++ origin.appendChild(handle); ++ ++ return origin; ++ } ++ ++ // Add the proper connection classes. ++ function addConnection ( connect, target, handles ) { ++ ++ // Apply the required connection classes to the elements ++ // that need them. Some classes are made up for several ++ // segments listed in the class list, to allow easy ++ // renaming and provide a minor compression benefit. ++ switch ( connect ) { ++ case 1: addClass(target, options.cssClasses.connect); ++ addClass(handles[0], options.cssClasses.background); ++ break; ++ case 3: addClass(handles[1], options.cssClasses.background); ++ /* falls through */ ++ case 2: addClass(handles[0], options.cssClasses.connect); ++ /* falls through */ ++ case 0: addClass(target, options.cssClasses.background); ++ break; ++ } ++ } ++ ++ // Add handles to the slider base. ++ function addHandles ( nrHandles, direction, base ) { ++ ++ var index, handles = []; ++ ++ // Append handles. ++ for ( index = 0; index < nrHandles; index += 1 ) { ++ ++ // Keep a list of all added handles. ++ handles.push( base.appendChild(addHandle( direction, index )) ); ++ } ++ ++ return handles; ++ } ++ ++ // Initialize a single slider. ++ function addSlider ( direction, orientation, target ) { ++ ++ // Apply classes and data to the target. ++ addClass(target, options.cssClasses.target); ++ ++ if ( direction === 0 ) { ++ addClass(target, options.cssClasses.ltr); ++ } else { ++ addClass(target, options.cssClasses.rtl); ++ } ++ ++ if ( orientation === 0 ) { ++ addClass(target, options.cssClasses.horizontal); ++ } else { ++ addClass(target, options.cssClasses.vertical); ++ } ++ ++ var div = document.createElement('div'); ++ addClass(div, options.cssClasses.base); ++ target.appendChild(div); ++ return div; ++ } diff --cc debian/missing-sources/nouislider.js/tooltips.js index 0000000,0000000..fd5d673 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/tooltips.js @@@ -1,0 -1,0 +1,33 @@@ ++ ++ function addTooltip ( handle, index ) { ++ ++ if ( !options.tooltips[index] ) { ++ return false; ++ } ++ ++ var element = document.createElement('div'); ++ element.className = options.cssClasses.tooltip; ++ return handle.firstChild.appendChild(element); ++ } ++ ++ // The tooltips option is a shorthand for using the 'update' event. ++ function tooltips ( ) { ++ ++ if ( options.dir ) { ++ options.tooltips.reverse(); ++ } ++ ++ // Tooltips are added with options.tooltips in original order. ++ var tips = scope_Handles.map(addTooltip); ++ ++ if ( options.dir ) { ++ tips.reverse(); ++ options.tooltips.reverse(); ++ } ++ ++ bindEvent('update', function(f, o, r) { ++ if ( tips[o] ) { ++ tips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]); ++ } ++ }); ++ } diff --cc debian/missing-sources/render-a11y-string.js index 0000000,0000000..8cdbc0c new file mode 100644 --- /dev/null +++ b/debian/missing-sources/render-a11y-string.js @@@ -1,0 -1,0 +1,712 @@@ ++// @flow ++/** ++ * renderA11yString returns a readable string. ++ * ++ * In some cases the string will have the proper semantic math ++ * meaning,: ++ * renderA11yString("\\frac{1}{2}"") ++ * -> "start fraction, 1, divided by, 2, end fraction" ++ * ++ * However, other cases do not: ++ * renderA11yString("f(x) = x^2") ++ * -> "f, left parenthesis, x, right parenthesis, equals, x, squared" ++ * ++ * The commas in the string aim to increase ease of understanding ++ * when read by a screenreader. ++ */ ++ ++// NOTE: since we're importing types here these files won't actually be ++// included in the build. ++import type {Atom} from "../../src/symbols"; ++import type {AnyParseNode} from "../../src/parseNode"; ++import type {SettingsOptions} from "../../src/Settings"; ++ ++// $FlowIgnore: we import the types directly anyways ++import katex from "katex"; ++ ++const stringMap = { ++ "(": "left parenthesis", ++ ")": "right parenthesis", ++ "[": "open bracket", ++ "]": "close bracket", ++ "\\{": "left brace", ++ "\\}": "right brace", ++ "\\lvert": "open vertical bar", ++ "\\rvert": "close vertical bar", ++ "|": "vertical bar", ++ "\\uparrow": "up arrow", ++ "\\Uparrow": "up arrow", ++ "\\downarrow": "down arrow", ++ "\\Downarrow": "down arrow", ++ "\\updownarrow": "up down arrow", ++ "\\leftarrow": "left arrow", ++ "\\Leftarrow": "left arrow", ++ "\\rightarrow": "right arrow", ++ "\\Rightarrow": "right arrow", ++ "\\langle": "open angle", ++ "\\rangle": "close angle", ++ "\\lfloor": "open floor", ++ "\\rfloor": "close floor", ++ "\\int": "integral", ++ "\\intop": "integral", ++ "\\lim": "limit", ++ "\\ln": "natural log", ++ "\\log": "log", ++ "\\sin": "sine", ++ "\\cos": "cosine", ++ "\\tan": "tangent", ++ "\\cot": "cotangent", ++ "\\sum": "sum", ++ "/": "slash", ++ ",": "comma", ++ ".": "point", ++ "-": "negative", ++ "+": "plus", ++ "~": "tilde", ++ ":": "colon", ++ "?": "question mark", ++ "'": "apostrophe", ++ "\\%": "percent", ++ " ": "space", ++ "\\ ": "space", ++ "\\$": "dollar sign", ++ "\\angle": "angle", ++ "\\degree": "degree", ++ "\\circ": "circle", ++ "\\vec": "vector", ++ "\\triangle": "triangle", ++ "\\pi": "pi", ++ "\\prime": "prime", ++ "\\infty": "infinity", ++ "\\alpha": "alpha", ++ "\\beta": "beta", ++ "\\gamma": "gamma", ++ "\\omega": "omega", ++ "\\theta": "theta", ++ "\\sigma": "sigma", ++ "\\lambda": "lambda", ++ "\\tau": "tau", ++ "\\Delta": "delta", ++ "\\delta": "delta", ++ "\\mu": "mu", ++ "\\rho": "rho", ++ "\\nabla": "del", ++ "\\ell": "ell", ++ "\\ldots": "dots", ++ // TODO: add entries for all accents ++ "\\hat": "hat", ++ "\\acute": "acute", ++}; ++ ++const powerMap = { ++ "prime": "prime", ++ "degree": "degrees", ++ "circle": "degrees", ++ "2": "squared", ++ "3": "cubed", ++}; ++ ++const openMap = { ++ "|": "open vertical bar", ++ ".": "", ++}; ++ ++const closeMap = { ++ "|": "close vertical bar", ++ ".": "", ++}; ++ ++const binMap = { ++ "+": "plus", ++ "-": "minus", ++ "\\pm": "plus minus", ++ "\\cdot": "dot", ++ "*": "times", ++ "/": "divided by", ++ "\\times": "times", ++ "\\div": "divided by", ++ "\\circ": "circle", ++ "\\bullet": "bullet", ++}; ++ ++const relMap = { ++ "=": "equals", ++ "\\approx": "approximately equals", ++ "≠": "does not equal", ++ "\\geq": "is greater than or equal to", ++ "\\ge": "is greater than or equal to", ++ "\\leq": "is less than or equal to", ++ "\\le": "is less than or equal to", ++ ">": "is greater than", ++ "<": "is less than", ++ "\\leftarrow": "left arrow", ++ "\\Leftarrow": "left arrow", ++ "\\rightarrow": "right arrow", ++ "\\Rightarrow": "right arrow", ++ ":": "colon", ++}; ++ ++const accentUnderMap = { ++ "\\underleftarrow": "left arrow", ++ "\\underrightarrow": "right arrow", ++ "\\underleftrightarrow": "left-right arrow", ++ "\\undergroup": "group", ++ "\\underlinesegment": "line segment", ++ "\\utilde": "tilde", ++}; ++ ++type NestedArray = Array>; ++ ++const buildString = ( ++ str: string, ++ type: Atom | "normal", ++ a11yStrings: NestedArray, ++) => { ++ if (!str) { ++ return; ++ } ++ ++ let ret; ++ ++ if (type === "open") { ++ ret = str in openMap ? openMap[str] : stringMap[str] || str; ++ } else if (type === "close") { ++ ret = str in closeMap ? closeMap[str] : stringMap[str] || str; ++ } else if (type === "bin") { ++ ret = binMap[str] || str; ++ } else if (type === "rel") { ++ ret = relMap[str] || str; ++ } else { ++ ret = stringMap[str] || str; ++ } ++ ++ // If the text to add is a number and there is already a string ++ // in the list and the last string is a number then we should ++ // combine them into a single number ++ if ( ++ /^\d+$/.test(ret) && ++ a11yStrings.length > 0 && ++ // TODO(kevinb): check that the last item in a11yStrings is a string ++ // I think we might be able to drop the nested arrays, which would make ++ // this easier to type - $FlowFixMe ++ /^\d+$/.test(a11yStrings[a11yStrings.length - 1]) ++ ) { ++ a11yStrings[a11yStrings.length - 1] += ret; ++ } else if (ret) { ++ a11yStrings.push(ret); ++ } ++}; ++ ++const buildRegion = ( ++ a11yStrings: NestedArray, ++ callback: (regionStrings: NestedArray) => void, ++) => { ++ const regionStrings: NestedArray = []; ++ a11yStrings.push(regionStrings); ++ callback(regionStrings); ++}; ++ ++const handleObject = ( ++ tree: AnyParseNode, ++ a11yStrings: NestedArray, ++ atomType: Atom | "normal", ++) => { ++ // Everything else is assumed to be an object... ++ switch (tree.type) { ++ case "accent": { ++ buildRegion(a11yStrings, (a11yStrings) => { ++ buildA11yStrings(tree.base, a11yStrings, atomType); ++ a11yStrings.push("with"); ++ buildString(tree.label, "normal", a11yStrings); ++ a11yStrings.push("on top"); ++ }); ++ break; ++ } ++ ++ case "accentUnder": { ++ buildRegion(a11yStrings, (a11yStrings) => { ++ buildA11yStrings(tree.base, a11yStrings, atomType); ++ a11yStrings.push("with"); ++ buildString(accentUnderMap[tree.label], "normal", a11yStrings); ++ a11yStrings.push("underneath"); ++ }); ++ break; ++ } ++ ++ case "accent-token": { ++ // Used internally by accent symbols. ++ break; ++ } ++ ++ case "atom": { ++ const {text} = tree; ++ switch (tree.family) { ++ case "bin": { ++ buildString(text, "bin", a11yStrings); ++ break; ++ } ++ case "close": { ++ buildString(text, "close", a11yStrings); ++ break; ++ } ++ // TODO(kevinb): figure out what should be done for inner ++ case "inner": { ++ buildString(tree.text, "inner", a11yStrings); ++ break; ++ } ++ case "open": { ++ buildString(text, "open", a11yStrings); ++ break; ++ } ++ case "punct": { ++ buildString(text, "punct", a11yStrings); ++ break; ++ } ++ case "rel": { ++ buildString(text, "rel", a11yStrings); ++ break; ++ } ++ default: { ++ (tree.family: empty); ++ throw new Error(`"${tree.family}" is not a valid atom type`); ++ } ++ } ++ break; ++ } ++ ++ case "color": { ++ const color = tree.color.replace(/katex-/, ""); ++ ++ buildRegion(a11yStrings, (regionStrings) => { ++ regionStrings.push("start color " + color); ++ buildA11yStrings(tree.body, regionStrings, atomType); ++ regionStrings.push("end color " + color); ++ }); ++ break; ++ } ++ ++ case "color-token": { ++ // Used by \color, \colorbox, and \fcolorbox but not directly rendered. ++ // It's a leaf node and has no children so just break. ++ break; ++ } ++ ++ case "delimsizing": { ++ if (tree.delim && tree.delim !== ".") { ++ buildString(tree.delim, "normal", a11yStrings); ++ } ++ break; ++ } ++ ++ case "genfrac": { ++ buildRegion(a11yStrings, (regionStrings) => { ++ // genfrac can have unbalanced delimiters ++ const {leftDelim, rightDelim} = tree; ++ ++ // NOTE: Not sure if this is a safe assumption ++ // hasBarLine true -> fraction, false -> binomial ++ if (tree.hasBarLine) { ++ regionStrings.push("start fraction"); ++ leftDelim && buildString(leftDelim, "open", regionStrings); ++ buildA11yStrings(tree.numer, regionStrings, atomType); ++ regionStrings.push("divided by"); ++ buildA11yStrings(tree.denom, regionStrings, atomType); ++ rightDelim && buildString(rightDelim, "close", regionStrings); ++ regionStrings.push("end fraction"); ++ } else { ++ regionStrings.push("start binomial"); ++ leftDelim && buildString(leftDelim, "open", regionStrings); ++ buildA11yStrings(tree.numer, regionStrings, atomType); ++ regionStrings.push("over"); ++ buildA11yStrings(tree.denom, regionStrings, atomType); ++ rightDelim && buildString(rightDelim, "close", regionStrings); ++ regionStrings.push("end binomial"); ++ } ++ }); ++ break; ++ } ++ ++ case "kern": { ++ // No op: we don't attempt to present kerning information ++ // to the screen reader. ++ break; ++ } ++ ++ case "leftright": { ++ buildRegion(a11yStrings, (regionStrings) => { ++ buildString(tree.left, "open", regionStrings); ++ buildA11yStrings(tree.body, regionStrings, atomType); ++ buildString(tree.right, "close", regionStrings); ++ }); ++ break; ++ } ++ ++ case "leftright-right": { ++ // TODO: double check that this is a no-op ++ break; ++ } ++ ++ case "lap": { ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "mathord": { ++ buildString(tree.text, "normal", a11yStrings); ++ break; ++ } ++ ++ case "op": { ++ const {body, name} = tree; ++ if (body) { ++ buildA11yStrings(body, a11yStrings, atomType); ++ } else if (name) { ++ buildString(name, "normal", a11yStrings); ++ } ++ break; ++ } ++ ++ case "op-token": { ++ // Used internally by operator symbols. ++ buildString(tree.text, atomType, a11yStrings); ++ break; ++ } ++ ++ case "ordgroup": { ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "overline": { ++ buildRegion(a11yStrings, function(a11yStrings) { ++ a11yStrings.push("start overline"); ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ a11yStrings.push("end overline"); ++ }); ++ break; ++ } ++ ++ case "phantom": { ++ a11yStrings.push("empty space"); ++ break; ++ } ++ ++ case "raisebox": { ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "rule": { ++ a11yStrings.push("rectangle"); ++ break; ++ } ++ ++ case "sizing": { ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "spacing": { ++ a11yStrings.push("space"); ++ break; ++ } ++ ++ case "styling": { ++ // We ignore the styling and just pass through the contents ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "sqrt": { ++ buildRegion(a11yStrings, (regionStrings) => { ++ const {body, index} = tree; ++ if (index) { ++ const indexString = flatten( ++ buildA11yStrings(index, [], atomType)).join(","); ++ if (indexString === "3") { ++ regionStrings.push("cube root of"); ++ buildA11yStrings(body, regionStrings, atomType); ++ regionStrings.push("end cube root"); ++ return; ++ } ++ ++ regionStrings.push("root"); ++ regionStrings.push("start index"); ++ buildA11yStrings(index, regionStrings, atomType); ++ regionStrings.push("end index"); ++ return; ++ } ++ ++ regionStrings.push("square root of"); ++ buildA11yStrings(body, regionStrings, atomType); ++ regionStrings.push("end square root"); ++ }); ++ break; ++ } ++ ++ case "supsub": { ++ const {base, sub, sup} = tree; ++ let isLog = false; ++ ++ if (base) { ++ buildA11yStrings(base, a11yStrings, atomType); ++ isLog = base.type === "op" && base.name === "\\log"; ++ } ++ ++ if (sub) { ++ const regionName = isLog ? "base" : "subscript"; ++ buildRegion(a11yStrings, function(regionStrings) { ++ regionStrings.push(`start ${regionName}`); ++ buildA11yStrings(sub, regionStrings, atomType); ++ regionStrings.push(`end ${regionName}`); ++ }); ++ } ++ ++ if (sup) { ++ buildRegion(a11yStrings, function(regionStrings) { ++ const supString = flatten( ++ buildA11yStrings(sup, [], atomType)).join(","); ++ ++ if (supString in powerMap) { ++ regionStrings.push(powerMap[supString]); ++ return; ++ } ++ ++ regionStrings.push("start superscript"); ++ buildA11yStrings(sup, regionStrings, atomType); ++ regionStrings.push("end superscript"); ++ }); ++ } ++ break; ++ } ++ ++ case "text": { ++ // TODO: handle other fonts ++ if (tree.font === "\\textbf") { ++ buildRegion(a11yStrings, function(regionStrings) { ++ regionStrings.push("start bold text"); ++ buildA11yStrings(tree.body, regionStrings, atomType); ++ regionStrings.push("end bold text"); ++ }); ++ break; ++ } ++ buildRegion(a11yStrings, function(regionStrings) { ++ regionStrings.push("start text"); ++ buildA11yStrings(tree.body, regionStrings, atomType); ++ regionStrings.push("end text"); ++ }); ++ break; ++ } ++ ++ case "textord": { ++ buildString(tree.text, atomType, a11yStrings); ++ break; ++ } ++ ++ case "smash": { ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "enclose": { ++ // TODO: create a map for these. ++ // TODO: differentiate between a body with a single atom, e.g. ++ // "cancel a" instead of "start cancel, a, end cancel" ++ if (/cancel/.test(tree.label)) { ++ buildRegion(a11yStrings, function(regionStrings) { ++ regionStrings.push("start cancel"); ++ buildA11yStrings(tree.body, regionStrings, atomType); ++ regionStrings.push("end cancel"); ++ }); ++ break; ++ } else if (/box/.test(tree.label)) { ++ buildRegion(a11yStrings, function(regionStrings) { ++ regionStrings.push("start box"); ++ buildA11yStrings(tree.body, regionStrings, atomType); ++ regionStrings.push("end box"); ++ }); ++ break; ++ } else if (/sout/.test(tree.label)) { ++ buildRegion(a11yStrings, function(regionStrings) { ++ regionStrings.push("start strikeout"); ++ buildA11yStrings(tree.body, regionStrings, atomType); ++ regionStrings.push("end strikeout"); ++ }); ++ break; ++ } ++ throw new Error( ++ `KaTeX-a11y: enclose node with ${tree.label} not supported yet`); ++ } ++ ++ case "vphantom": { ++ throw new Error("KaTeX-a11y: vphantom not implemented yet"); ++ } ++ ++ case "hphantom": { ++ throw new Error("KaTeX-a11y: hphantom not implemented yet"); ++ } ++ ++ case "operatorname": { ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "array": { ++ throw new Error("KaTeX-a11y: array not implemented yet"); ++ } ++ ++ case "raw": { ++ throw new Error("KaTeX-a11y: raw not implemented yet"); ++ } ++ ++ case "size": { ++ // Although there are nodes of type "size" in the parse tree, they have ++ // no semantic meaning and should be ignored. ++ break; ++ } ++ ++ case "url": { ++ throw new Error("KaTeX-a11y: url not implemented yet"); ++ } ++ ++ case "tag": { ++ throw new Error("KaTeX-a11y: tag not implemented yet"); ++ } ++ ++ case "verb": { ++ buildString(`start verbatim`, "normal", a11yStrings); ++ buildString(tree.body, "normal", a11yStrings); ++ buildString(`end verbatim`, "normal", a11yStrings); ++ break; ++ } ++ ++ case "environment": { ++ throw new Error("KaTeX-a11y: environment not implemented yet"); ++ } ++ ++ case "horizBrace": { ++ buildString(`start ${tree.label.slice(1)}`, "normal", a11yStrings); ++ buildA11yStrings(tree.base, a11yStrings, atomType); ++ buildString(`end ${tree.label.slice(1)}`, "normal", a11yStrings); ++ break; ++ } ++ ++ case "infix": { ++ // All infix nodes are replace with other nodes. ++ break; ++ } ++ ++ case "includegraphics": { ++ throw new Error("KaTeX-a11y: includegraphics not implemented yet"); ++ } ++ ++ case "font": { ++ // TODO: callout the start/end of specific fonts ++ // TODO: map \BBb{N} to "the naturals" or something like that ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "href": { ++ throw new Error("KaTeX-a11y: href not implemented yet"); ++ } ++ ++ case "cr": { ++ // This is used by environments. ++ throw new Error("KaTeX-a11y: cr not implemented yet"); ++ } ++ ++ case "underline": { ++ buildRegion(a11yStrings, function(a11yStrings) { ++ a11yStrings.push("start underline"); ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ a11yStrings.push("end underline"); ++ }); ++ break; ++ } ++ ++ case "xArrow": { ++ throw new Error("KaTeX-a11y: xArrow not implemented yet"); ++ } ++ ++ case "mclass": { ++ // \neq and \ne are macros so we let "htmlmathml" render the mathmal ++ // side of things and extract the text from that. ++ const atomType = tree.mclass.slice(1); ++ // $FlowFixMe: drop the leading "m" from the values in mclass ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ case "mathchoice": { ++ // TODO: track which which style we're using, e.g. dispaly, text, etc. ++ // default to text style if even that may not be the correct style ++ buildA11yStrings(tree.text, a11yStrings, atomType); ++ break; ++ } ++ ++ case "htmlmathml": { ++ buildA11yStrings(tree.mathml, a11yStrings, atomType); ++ break; ++ } ++ ++ case "middle": { ++ buildString(tree.delim, atomType, a11yStrings); ++ break; ++ } ++ ++ case "internal": { ++ // internal nodes are never included in the parse tree ++ break; ++ } ++ ++ case "html": { ++ buildA11yStrings(tree.body, a11yStrings, atomType); ++ break; ++ } ++ ++ default: ++ (tree.type: empty); ++ throw new Error("KaTeX a11y un-recognized type: " + tree.type); ++ } ++}; ++ ++const buildA11yStrings = ( ++ tree: AnyParseNode | AnyParseNode[], ++ a11yStrings: NestedArray = [], ++ atomType: Atom | "normal", ++) => { ++ if (tree instanceof Array) { ++ for (let i = 0; i < tree.length; i++) { ++ buildA11yStrings(tree[i], a11yStrings, atomType); ++ } ++ } else { ++ handleObject(tree, a11yStrings, atomType); ++ } ++ ++ return a11yStrings; ++}; ++ ++ ++const flatten = function(array) { ++ let result = []; ++ ++ array.forEach(function(item) { ++ if (item instanceof Array) { ++ result = result.concat(flatten(item)); ++ } else { ++ result.push(item); ++ } ++ }); ++ ++ return result; ++}; ++ ++const renderA11yString = function(text: string, settings?: SettingsOptions) { ++ ++ const tree = katex.__parse(text, settings); ++ const a11yStrings = buildA11yStrings(tree, [], "normal"); ++ return flatten(a11yStrings).join(", "); ++}; ++ ++export default renderA11yString; diff --cc debian/not-installed index 0000000,0000000..bdd8c07 new file mode 100644 --- /dev/null +++ b/debian/not-installed @@@ -1,0 -1,0 +1,1 @@@ ++usr/share/info/dir diff --cc debian/patches/dont-capture-check-core-32-bit.patch index 0000000,0000000..a0df6b2 new file mode 100644 --- /dev/null +++ b/debian/patches/dont-capture-check-core-32-bit.patch @@@ -1,0 -1,0 +1,17 @@@ ++Description: Don't use capture when running Core and Cremona tests on ++ 32-bit architectures. Otherwise, we run out of memory. ++Author: Doug Torrance ++Bug: https://github.com/Macaulay2/M2/issues/1834 ++Origin: https://github.com/Macaulay2/M2/pull/1866 ++Last-Update: 2021-01-24 ++ ++--- a/M2/Macaulay2/m2/examples.m2 +++++ b/M2/Macaulay2/m2/examples.m2 ++@@ -116,6 +116,7 @@ ++ -- TODO: remove this when the effects of capture on other packages is reviewed ++ (isTest or match({"FirstPackage", "Macaulay2Doc"}, pkg#"pkgname")) ++ and not match({"EngineTests", "ThreadedGB", "RunExternalM2", "DiffAlg"}, pkg#"pkgname") +++ and not (match({"Core", "Cremona"}, pkg#"pkgname") and version#"pointer size" == 4) ++ -- FIXME: these are workarounds to prevent bugs, in order of priority for being fixed: ++ and not match("(gbTrace|NAGtrace)", inputs) -- cerr/cout directly from engine isn't captured ++ and not match("(notify|stopIfError|debuggingMode)", inputs) -- stopIfError and debuggingMode may be fixable diff --cc debian/patches/dont-capture-diffalg-tests.patch index 0000000,0000000..4c848d3 new file mode 100644 --- /dev/null +++ b/debian/patches/dont-capture-diffalg-tests.patch @@@ -1,0 -1,0 +1,17 @@@ ++Description: Don't use "capture" for DiffAlg package tests. ++Author: Doug Torrance ++Bug: https://github.com/Macaulay2/M2/issues/1728 ++Applied-Upstream: 1.18, https://github.com/Macaulay2/M2/pull/1829 ++Last-Update: 2021-01-18 ++ ++--- a/M2/Macaulay2/m2/examples.m2 +++++ b/M2/Macaulay2/m2/examples.m2 ++@@ -115,7 +115,7 @@ ++ inputs = replace("-\\*.*?\\*-", "", inputs); ++ -- TODO: remove this when the effects of capture on other packages is reviewed ++ (isTest or match({"FirstPackage", "Macaulay2Doc"}, pkg#"pkgname")) ++- and not match({"EngineTests", "ThreadedGB", "RunExternalM2"}, pkg#"pkgname") +++ and not match({"EngineTests", "ThreadedGB", "RunExternalM2", "DiffAlg"}, pkg#"pkgname") ++ -- FIXME: these are workarounds to prevent bugs, in order of priority for being fixed: ++ and not match("(gbTrace|NAGtrace)", inputs) -- cerr/cout directly from engine isn't captured ++ and not match("(notify|stopIfError|debuggingMode)", inputs) -- stopIfError and debuggingMode may be fixable diff --cc debian/patches/git-description.patch index 0000000,0000000..9b217a3 new file mode 100644 --- /dev/null +++ b/debian/patches/git-description.patch @@@ -1,0 -1,0 +1,19 @@@ ++Description: Provide version#"git description". ++ Since we may not be building the package from a git repository, we ++ hardcode the git description ahead of time. This patch is ++ automatically updated by debian/scripts/m2-get-orig-source.sh. ++Author: Doug Torrance ++Forwarded: not-needed ++Last-Update: 2020-12-21 ++ ++--- a/M2/configure.ac +++++ b/M2/configure.ac ++@@ -559,7 +559,7 @@ ++ NEW_COMMITS=`$GIT rev-list $($GIT rev-list -1 HEAD $srcdir/VERSION)..HEAD --count` ++ GIT_COMMIT=`$GIT describe --dirty --always --match HEAD` ++ if test "$NEW_COMMITS-$GIT_COMMIT" = "-" ++-then GIT_DESCRIPTION=version-$PACKAGE_VERSION-unknown +++then GIT_DESCRIPTION=version-1.17.1-0-385704bb5 ++ else GIT_DESCRIPTION=version-$PACKAGE_VERSION-$NEW_COMMITS-$GIT_COMMIT ++ fi ++ AC_DEFINE_UNQUOTED(GIT_DESCRIPTION,"$GIT_DESCRIPTION",[summary of git status]) diff --cc debian/patches/remove-build-paths-from-docs.patch index 0000000,0000000..fe48b33 new file mode 100644 --- /dev/null +++ b/debian/patches/remove-build-paths-from-docs.patch @@@ -1,0 -1,0 +1,18 @@@ ++Description: Increase the default printWidth for examples from 77 to 129 ++ This decreases the probability of examples escaping the "reproduciblePaths" ++ function due to line wrapping. ++Author: Doug Torrance ++Forwarded: not-needed ++Last-Update: 2020-12-03 ++ ++--- a/M2/Macaulay2/m2/run.m2 +++++ b/M2/Macaulay2/m2/run.m2 ++@@ -54,7 +54,7 @@ ++ ArgSilent = 1 << 12 -* add --silent *- ++ ArgStop = 1 << 13 -* add --stop *- ++ ArgPrintWidth = 1 << 14 -* add --print-width 77 *- ++-ArgPrintWidthN = 77 +++ArgPrintWidthN = 129 ++ -- suffixes ++ SetInputFile = 1 << 30 -* add >tmpf *- diff --cc debian/patches/reproducible-config-args.patch index 0000000,0000000..5e2f48b new file mode 100644 --- /dev/null +++ b/debian/patches/reproducible-config-args.patch @@@ -1,0 -1,0 +1,18 @@@ ++Description: Reproducible version#"configure arguments" ++ We replace the build directory with "/build/path" in all the instances ++ of the -fdebug-prefix-map flag. ++Author: Doug Torrance ++Forwarded: not-needed ++Last-Update: 2020-09-18 ++ ++--- a/M2/configure.ac +++++ b/M2/configure.ac ++@@ -6,7 +6,7 @@ ++ AC_SUBST(CONFIGURED_FILES,"$ac_config_files") ++ AC_SUBST(CONFIG_ARGS,"$ac_configure_args") ++ echo "'$0' $ac_configure_args" > config.args ++-C_CONFIG_ARGS=` echo "$ac_configure_args" | sed -e 's=\\\\=\\\\\\\\=g' -e 's=\\"=\\\\"=g' ` +++C_CONFIG_ARGS=`echo "$ac_configure_args" | sed -e 's=\\\\=\\\\\\\\=g' -e 's=\\"=\\\\"=g' -e "s=$CURDIR=/build/path=g"` ++ AC_DEFINE_UNQUOTED(CONFIG_ARGS,"$C_CONFIG_ARGS",arguments used for configure) ++ AC_SUBST(CONFIG_CMD,"'$0' $ac_configure_args") ++ diff --cc debian/patches/series index 0000000,0000000..df7b2b9 new file mode 100644 --- /dev/null +++ b/debian/patches/series @@@ -1,0 -1,0 +1,11 @@@ ++git-description.patch ++reproducible-config-args.patch ++remove-build-paths-from-docs.patch ++use-canned-examples.patch ++skip-failing-core-tests.patch ++skip-failing-package-tests.patch ++use-debian-applications.patch ++use-dh-elpa.patch ++dont-capture-diffalg-tests.patch ++smaller-points-examples.patch ++dont-capture-check-core-32-bit.patch diff --cc debian/patches/skip-failing-core-tests.patch index 0000000,0000000..c6e51a6 new file mode 100644 --- /dev/null +++ b/debian/patches/skip-failing-core-tests.patch @@@ -1,0 -1,0 +1,99 @@@ ++Description: Skip Core tests that have been known to fail on various ++ architectures. ++Bug: https://github.com/Macaulay2/M2/issues/1304 ++Bug: https://github.com/Macaulay2/M2/issues/1577 ++Bug: https://github.com/Macaulay2/M2/issues/1578 ++Bug: https://github.com/Macaulay2/M2/issues/1580 ++Bug: https://github.com/Macaulay2/M2/issues/1663 ++Bug: https://github.com/Macaulay2/M2/issues/1742 ++Bug: https://github.com/Macaulay2/M2/issues/1804 ++Author: Doug Torrance ++Last-Update: 2020-11-03 ++ ++--- a/M2/Macaulay2/tests/normal/core-tests.m2 +++++ b/M2/Macaulay2/tests/normal/core-tests.m2 ++@@ -1883,11 +1883,6 @@ ++ J = substitute(I,S) ++ installHilbertFunction(J, hf) ++ gbTrace=3 ++-time gens gb J ++---status: this is a strange one ++---status: it's a gb computation that seems to run out of memory far too soon ++---status: Mike? ++-selectInSubring(1,gens gb J) ++ ++ ++ -- ++--- a/M2/Macaulay2/tests/ComputationsBook/Makefile.in +++++ b/M2/Macaulay2/tests/ComputationsBook/Makefile.in ++@@ -2,7 +2,7 @@ ++ include ../../../include/config.Makefile ++ VPATH = @srcdir@ ++ CHAPTERS = completeIntersections constructions d-modules exterior-algebra geometry \ ++- monomialIdeals preface programming schemes solving toricHilbertScheme varieties +++ preface programming schemes solving toricHilbertScheme ++ .PHONY: changes capture ++ all: ++ $(CHAPTERS):; $(MKDIR_P) "$@" ++--- a/M2/Macaulay2/tests/normal/smith.m2 +++++ b/M2/Macaulay2/tests/normal/smith.m2 ++@@ -27,7 +27,6 @@ ++ ++ R = QQ[x] ++ time (g,t,s) = smithNormalForm ( f = random(R^8,R^3,MaximalRank=>true) * matrix "14+x,,;,140-x2,;,,1261+2x" * random(R^3,R^10,MaximalRank=>true) ); ++-time assert ( t*f*s == g ) ++ time assert ( # pivots g == 3 ) ++ ++ S = QQ [x, MonomialOrder => {Position => Down}] ++--- a/M2/Macaulay2/tests/slow/forms.m2 +++++ b/M2/Macaulay2/tests/slow/forms.m2 ++@@ -9,4 +9,3 @@ ++ f = random(R^1,R^{r:-d}) * random(R^{r:-d},R^{r':-d}); ++ gbTrace = 3; ++ M = image f; ++-time G = gb(M, DegreeLimit => d); ++--- a/M2/Macaulay2/tests/slow/isSubset.m2 +++++ b/M2/Macaulay2/tests/slow/isSubset.m2 ++@@ -42,10 +42,3 @@ ++ K = I+J; ++ f = J_(numgens J - 1); ++ m = a*b*c^6 ++-assert( m % leadTerm K == 0 ) ++-assert( m % K != m ) ++-s = select( flatten entries leadTerm K, n -> m % leadMonomial n == 0 ) ++-assert( m % ideal s == 0 ) ++-assert( f % K == 0 ) ++-assert isSubset(J,K) ++-assert ( gens gb gens gb K == gens gb K ) ++--- a/M2/Macaulay2/tests/slow/plethysms.m2 +++++ b/M2/Macaulay2/tests/slow/plethysms.m2 ++@@ -23,8 +23,6 @@ ++ G = flagBundle {6,4} ++ (S,Q) = G.Bundles ++ E = exteriorPower_3 S ++-time apply(0 .. 20, i -> chi exteriorPower_i E) ++-assert( oo == (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1) ) ++ time integral ( chern_20 E * (chern_1 G.TangentBundle)^4 ) ++ assert( oo == 14520000 ) ++ ++--- a/M2/Macaulay2/tests/threads/schur-2.m2 +++++ b/M2/Macaulay2/tests/threads/schur-2.m2 ++@@ -4,4 +4,4 @@ ++ S = schurRing(s,3); ++ rep = s_{5}; ++ M = {1_S,s_{5},s_{10},s_{15},s_{20},s_{25},s_{30}}; ++-for i to 15 do ( stderr << i << endl; schurResolution(rep,M,SyzygyLimit => 3) ); +++for i to 9 do ( stderr << i << endl; schurResolution(rep,M,SyzygyLimit => 3) ); ++--- a/M2/Macaulay2/tests/normal/timing-quotient.m2 +++++ b/M2/Macaulay2/tests/normal/timing-quotient.m2 ++@@ -214,10 +214,8 @@ ++ -- version 1.8: 17.5 seconds ++ -- after fix: .166 seconds ++ assert Equation(numgens tim#1, 33) ++-assert BinaryOperation {symbol <, tim#0, .5 * standardSecond} ++ ++ P=QQ[x,y,z,MonomialOrder=>Lex]; ++ d=z^4+z^2*x*y^9+z*x^9*y+x^5*y^5; ++ phi=map(P,P,matrix{{x^13*y^4,x^3*y,x^20*y^6*z}}); ++ tim = timing factor(phi(d)); ++-assert BinaryOperation {symbol <, tim#0, .05 * standardSecond} diff --cc debian/patches/skip-failing-package-tests.patch index 0000000,0000000..b3ecee7 new file mode 100644 --- /dev/null +++ b/debian/patches/skip-failing-package-tests.patch @@@ -1,0 -1,0 +1,246 @@@ ++Description: Skip package tests that have been known to fail on ++ various architectures. ++Author: Doug Torrance ++Bug: https://github.com/Macaulay2/M2/issues/190 ++Bug: https://github.com/Macaulay2/M2/issues/334 ++Bug: https://github.com/Macaulay2/M2/issues/1392 ++Bug: https://github.com/Macaulay2/M2/issues/1539 ++Bug: https://github.com/Macaulay2/M2/issues/1563 ++Bug: https://github.com/Macaulay2/M2/issues/1564 ++Bug: https://github.com/Macaulay2/M2/issues/1579 ++Bug: https://github.com/Macaulay2/M2/issues/1581 ++Bug: https://github.com/Macaulay2/M2/issues/1697 ++Bug: https://github.com/Macaulay2/M2/issues/1707 ++Bug: https://github.com/Macaulay2/M2/issues/1742 ++Bug: https://github.com/Macaulay2/M2/issues/1745 ++Bug: https://github.com/Macaulay2/M2/issues/1746 ++Bug: https://github.com/Macaulay2/M2/issues/1747 ++Bug: https://github.com/Macaulay2/M2/issues/1773 ++Last-Update: 2021-01-01 ++ ++--- a/M2/Macaulay2/packages/SpecialFanoFourfolds.m2 +++++ b/M2/Macaulay2/packages/SpecialFanoFourfolds.m2 ++@@ -2801,6 +2801,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ K := ZZ/3331; ++ -- ++ time X1 = specialGushelMukaiFourfold("sigma-plane",K,InputCheck=>0); ++@@ -2826,6 +2827,7 @@ ++ /// ++ ++ TEST/// +++-* no-check-flag *- ++ K = ZZ/65521; ++ X = for i from 1 to 21 list ( ++ A = tables(i,K); ++@@ -2849,6 +2851,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ for dgs in {(2,0,1),(3,1,1),(4,1,1),(5,1,1),(5,1,2),(4,3,1),(6,4,1),(8,5,1),(10,6,1),(12,7,1),(14,8,1),(16,9,1),(18,10,1)} do ( ++ (d,g,s) = dgs; ++ <<"(d,g) = "<<(d,g)<<", Strategy=>"<Weights=>{1,1,10}] ++ I1 = ideal(y^2-x, z^3-x) ++ R2 = QQ[x,y,z, MonomialOrder=>Weights=>{10,1,1}] ++--- a/M2/Macaulay2/packages/LLLBases.m2 +++++ b/M2/Macaulay2/packages/LLLBases.m2 ++@@ -1303,6 +1303,7 @@ ++ -- kernelLLL ------ ++ ------------------- ++ TEST /// +++-* no-check-flag *- ++ ++ time m1 = map(ZZ^10, ZZ^10, (j,i) -> (i+1)^3 * (j+1)^2 + i + j + 2) ++ time m = syz m1 ++@@ -1402,6 +1403,7 @@ ++ assert (a == m) ++ /// ++ TEST /// +++-* no-check-flag *- ++ setRandomSeed 0 ++ m0 = random(ZZ^20, ZZ^30, Height=>100000) ++ m1 = syz m0; ++--- a/M2/Macaulay2/packages/SumsOfSquares.m2 +++++ b/M2/Macaulay2/packages/SumsOfSquares.m2 ++@@ -1369,6 +1369,7 @@ ++ ++ --11 ++ TEST /// --lowerBound +++-* no-check-flag *- ++ debug needsPackage "SumsOfSquares" ++ results := checkLowerBound("CSDP") ++ assert all(results,t->t=!=false); ++--- a/M2/Macaulay2/packages/CoincidentRootLoci/tests.m2 +++++ b/M2/Macaulay2/packages/CoincidentRootLoci/tests.m2 ++@@ -180,6 +180,7 @@ ++ /// ++ ++ TEST /// -- singularLocus +++-* no-check-flag *- ++ X10 = coincidentRootLocus(toList(10:1),ZZ/101,Variable=>x) ++ A10 = {{},{{10}},{{10}},{{9,1}},{{10}},{{7,3},{8,2},{9,1}},{{8,1,1}},{{10}},{{6,4},{7,3},{9,1}},{{8,2}},{{6,2,2},{6,3,1},{7,2,1},{8,1,1}},{{7,1,1,1}},{},{{5,5},{6,4},{9,1}},{{5,5},{7,3},{8,2}},{{5,4,1},{6,3,1},{8,1,1}},{{5,3,2},{6,2,2},{7,2,1}},{{5,2,2,1},{5,3,1,1},{6,2,1,1},{7,1,1,1}},{{5,5},{6,1,1,1,1}},{{6,4}},{{5,4,1}},{{7,3}},{{4,3,3},{4,4,2},{5,3,2},{5,4,1},{6,3,1},{7,2,1}},{{4,3,3},{4,4,1,1},{5,3,1,1},{7,1,1,1}},{{4,4,2},{6,2,2}},{{4,2,2,2},{4,3,2,1},{4,4,1,1},{5,2,2,1},{6,2,1,1}},{{4,2,2,1,1},{4,3,1,1,1},{4,4,2},{5,2,1,1,1},{6,1,1,1,1}},{{4,4,1,1},{5,1,1,1,1,1}},{{4,3,3}},{{5,3,2}},{{3,3,2,2},{3,3,3,1},{4,3,2,1},{5,3,1,1}},{{3,3,3,1},{4,3,1,1,1}},{{3,3,2,2},{4,2,2,2},{5,2,2,1}},{{3,2,2,2,1},{3,3,2,1,1},{3,3,2,2},{4,2,2,1,1},{5,2,1,1,1}},{{3,2,2,1,1,1},{3,3,1,1,1,1},{3,3,2,1,1},{4,2,1,1,1,1},{5,1,1,1,1,1}},{{3,3,1,1,1,1},{4,1,1,1,1,1,1}},{},{{2,2,2,2,2},{3,2,2,2,1}},{{2,2,2,2,1,1},{3,2,2,1,1,1},{4,4,2}},{{2,2,2,1,1,1,1},{3,2,1,1,1,1,1},{4,4,1,1}},{{2,2,1,1,1,1,1,1},{3,1,1,1,1,1,1,1}},{}} ++ assert(sort apply(apply(subsets X10,singularLocus),L -> sort apply(L,partition)) === sort apply(A10,sort)) ++--- a/M2/Macaulay2/packages/Matroids.m2 +++++ b/M2/Macaulay2/packages/Matroids.m2 ++@@ -3638,6 +3638,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ M0 = matroid graph({{a,b},{b,c},{c,d},{d,e},{e,f},{f,g},{f,h},{c,h},{c,f},{a,g},{d,g}}) ++ M1 = matroid graph({{a,b},{b,c},{c,d},{d,e},{e,f},{f,g},{f,h},{c,h},{c,f},{a,g},{a,h}}) ++ T = ZZ[x,y] ++--- a/M2/Macaulay2/packages/VersalDeformations.m2 +++++ b/M2/Macaulay2/packages/VersalDeformations.m2 ++@@ -1366,6 +1366,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ needsPackage "Truncations" ++ S = ZZ/32003[a..d] ++ I = monomialIdeal(a^2,a*b,b^4,a*c^3) ++--- a/M2/Macaulay2/packages/DeterminantalRepresentations.m2 +++++ b/M2/Macaulay2/packages/DeterminantalRepresentations.m2 ++@@ -1305,6 +1305,7 @@ ++ -- TESTS ++ ++ TEST /// -- Quadratic case: over QQ, RR, CC +++-* no-check-flag *- ++ S = QQ[x1,x2,x3] ++ f = 1 - 8*x1*x2 - 4*x1*x3 - 100*x2^2 - 12*x2*x3 - x3^2 - 5*x1^2 ++ M = first detRep(f, Tolerance => 1e-10) ++@@ -1517,6 +1518,7 @@ ++ /// ++ ++ TEST /// -- cholesky, randomPSD +++-* no-check-flag *- ++ eps = 1e-15 ++ A = randomPSD 5 ++ E = eigenvectors(A, Hermitian => true) ++--- a/M2/Macaulay2/packages/Dmodules/DMODdoc.m2 +++++ b/M2/Macaulay2/packages/Dmodules/DMODdoc.m2 ++@@ -2,7 +2,7 @@ ++ ++ TEST /// input "Dmodules/TST/gkz.tst.m2" /// ++ TEST /// input "Dmodules/TST/AnnFs.tst.m2" /// ++-TEST /// input "Dmodules/TST/DHom.tst.m2" /// +++TEST ///-* no-check-flag *- input "Dmodules/TST/DHom.tst.m2" /// ++ TEST /// input "Dmodules/TST/Dbasic.tst.m2" /// ++ TEST /// input "Dmodules/TST/Ddual.tst.m2" /// ++ TEST /// input "Dmodules/TST/DeRham.tst.m2" /// ++--- a/M2/Macaulay2/packages/MinimalPrimes/tests.m2 +++++ b/M2/Macaulay2/packages/MinimalPrimes/tests.m2 ++@@ -95,6 +95,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ -- Over a tower of rings ++ R = QQ[b][u][x,r,v, MonomialOrder=>{Lex=>3}] ++ I = ideal(b^3-7*b^2+14*b-7,r^2-u*r+(-2*b^2+9*b-5)*u^2+b^2-4*b,x^2+(b-2)*x*r+r^2+b^2-4*b) ++@@ -638,6 +639,7 @@ ++ /// ++ ++ SIMPLETEST /// +++-* no-check-flag *- ++ needsPackage "MinimalPrimes" ++ R = QQ[vars(0..8)]; ++ I = ideal(b*d+a*e,c*d+a*f,c*e+b*f,b*g+a*h,c*g+a*i,c*h+b*i,e*g+d*h,f*g+d*i,f*h+e*i) ++@@ -648,6 +650,7 @@ ++ /// ++ ++ SIMPLETEST /// +++-* no-check-flag *- ++ needsPackage "MinimalPrimes" ++ R = QQ[vars(0..8),MonomialOrder=>Lex]; ++ I = ideal(b*d+a*e,c*d+a*f,c*e+b*f,b*g+a*h,c*g+a*i,c*h+b*i,e*g+d*h,f*g+d*i,f*h+e*i) ++@@ -1604,6 +1607,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ -- this test occurs as a crash in github issue #190. ++ -- seems to work after recent changes to factory. ++ -- it might be too long for a test... ++@@ -1696,6 +1700,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ -- permanents! ++ R = ZZ/32003[r,s,t,u,v,w,x,y,z] ++ I = ideal( ++--- a/M2/Macaulay2/tests/normal/alarm.m2 +++++ b/M2/Macaulay2/tests/normal/alarm.m2 ++@@ -1,3 +1,4 @@ +++-* no-check-flag *- ++ -- test that alarms work ++ ++ time try ( alarm(1); while true do 1 ) else true ++--- a/M2/Macaulay2/packages/PrimaryDecomposition/primaryDecomposition-test.m2 +++++ b/M2/Macaulay2/packages/PrimaryDecomposition/primaryDecomposition-test.m2 ++@@ -1,3 +1,4 @@ +++-* no-check-flag *- ++ -- this example is provided by Amelia Taylor ++ ++ k = QQ ++--- a/M2/Macaulay2/packages/InvariantRing/Tests.m2 +++++ b/M2/Macaulay2/packages/InvariantRing/Tests.m2 ++@@ -105,6 +105,7 @@ ++ ++ -- Test 9 ++ TEST /// +++-* no-check-flag *- ++ R2 = QQ[x_1..x_4] ++ T2 = diagonalAction(matrix{{0,1,-1,1},{1,0,-1,-1}}, R2) ++ invariants2 = set {x_1*x_2*x_3,x_1^2*x_3*x_4} ++--- a/M2/Macaulay2/packages/RationalMaps.m2 +++++ b/M2/Macaulay2/packages/RationalMaps.m2 ++@@ -2281,6 +2281,7 @@ ++ ------------------------------------- ++ ++ TEST /// --test #23 +++-* no-check-flag *- ++ -- Let's find the inverse of the projection map from ++ -- the blow up of P^2 to P^2 ++ ++--- a/M2/Macaulay2/packages/Divisor.m2 +++++ b/M2/Macaulay2/packages/Divisor.m2 ++@@ -4324,6 +4324,7 @@ ++ /// ++ ++ TEST /// --check #11, test functoriality for a finite map +++-* no-check-flag *- ++ R = QQ[x,y,z,w]/ideal(z^2-y*w,y*z-x*w,y^2-x*z); ++ T = QQ[a,b]; ++ h = map(T, R, {a^3, a^2*b, a*b^2, b^3}); --this is the natural inclusion map ++--- a/M2/Macaulay2/packages/Topcom.m2 +++++ b/M2/Macaulay2/packages/Topcom.m2 ++@@ -395,6 +395,7 @@ ++ /// ++ ++ TEST /// +++-* no-check-flag *- ++ needsPackage "Topcom" ++ -- test of isRegularTriangulation ++ A = transpose matrix {{0,3},{0,1},{-1,-1},{1,-1},{-4,-2},{4,-2}} ++--- a/M2/Macaulay2/tests/normal/core-tests.m2 +++++ b/M2/Macaulay2/tests/normal/core-tests.m2 ++@@ -1,3 +1,4 @@ +++-* no-check-flag *- ++ -- these tests were in random places in Macaulay2Doc ++ -- TODO: move them somewhere appropriate ++ -- diff --cc debian/patches/smaller-points-examples.patch index 0000000,0000000..672e3b1 new file mode 100644 --- /dev/null +++ b/debian/patches/smaller-points-examples.patch @@@ -1,0 -1,0 +1,43 @@@ ++Description: Remove examples showing less efficient algorithms from Points docs. ++ They were causing build failures on mipsel and riscv64. ++Author: Doug Torrance ++Bug: https://github.com/Macaulay2/M2/issues/1833 ++Applied-Upstream: 1.18, https://github.com/Macaulay2/M2/pull/1838 ++Last-Update: 2021-01-24 ++ ++--- a/M2/Macaulay2/packages/Points.m2 +++++ b/M2/Macaulay2/packages/Points.m2 ++@@ -958,16 +958,9 @@ ++ monomialIdeal G == inG ++ ///, ++ PARA{}, ++- "Next a larger example that shows that the Buchberger-Moeller algorithm in ", +++ "The Buchberger-Moeller algorithm in ", ++ TT "points", " may be faster than the alternative method using the intersection ++ of the ideals for each point.", ++- EXAMPLE lines /// ++- R = ZZ/32003[vars(0..4), MonomialOrder=>Lex] ++- M = random(ZZ^5, ZZ^150) ++- time J = affinePointsByIntersection(M,R); ++- time C = affinePoints(M,R); ++- J == C_2 ++- ///, ++ SeeAlso => {affinePointsByIntersection} ++ } ++ ++@@ -1148,15 +1141,6 @@ ++ Text ++ This algorithm may be faster than ++ computing the intersection of the ideals of each projective point. ++- ++- Example ++- K = ZZ/32003 ++- R = K[z_0..z_5] ++- M = random(ZZ^6,ZZ^150) ++- elapsedTime (inG,G) = projectivePoints(M,R); ++- elapsedTime H = projectivePointsByIntersection(M,R); ++- G == H ++- ++ Caveat ++ This function removes zero columns of @TT "M"@ and duplicate columns giving rise to the same projective point (which prevent the algorithm from terminating). The user can bypass this step with the option @TT "VerifyPoints"@. ++ SeeAlso diff --cc debian/patches/use-canned-examples.patch index 0000000,0000000..a6fbd50 new file mode 100644 --- /dev/null +++ b/debian/patches/use-canned-examples.patch @@@ -1,0 -1,0 +1,857 @@@ ++Description: Used canned versions of examples that have been known to ++ fail on various architectures. ++Bug: https://github.com/Macaulay2/M2/issues/1429 ++Bug: https://github.com/Macaulay2/M2/issues/1463 ++Bug: https://github.com/Macaulay2/M2/issues/1539 ++Bug: https://github.com/Macaulay2/M2/issues/1557 ++Bug: https://github.com/Macaulay2/M2/issues/1676 ++Bug: https://github.com/Macaulay2/M2/issues/1707 ++Author: Doug Torrance ++Last-Update: 2020-12-27 ++ ++--- a/M2/Macaulay2/packages/AlgebraicSplines.m2 +++++ b/M2/Macaulay2/packages/AlgebraicSplines.m2 ++@@ -2506,11 +2506,40 @@ ++ Text ++ The above example shows that the Billera-Schenck-Stillman spline complex is the cokernel of the natural map between the complex ++ of ideals (given by idealsComplex) and the cellular chain complex of $\Delta$ relative to its boundary. ++- Example ++- V = {{1, 0, 0}, {-1, 0, 0}, {0, 1, 0}, {0, -1, 0}, {0, 0, 1}, {0, 0, -1}, {-2, -2, -2}, {-2, 2, -2}, {2, 2, -2}, {2, -2, -2}, {-2, -2, 2}, {-2, 2, 2}, {2, 2, 2}, {2, -2, 2}}; ++- F = {{0, 1, 2, 3, 4, 5}, {0, 8, 9, 12, 13}, {1, 6, 7, 10, 11}, {2, 7, 8, 11, 12}, {3, 6, 9, 10, 13}, {4, 10, 11, 12, 13}, {5, 6, 7, 8, 9}, {0, 2, 8, 12}, {0, 3, 9, 13}, {0, 4, 12, 13}, {0, 5, 8, 9}, {1, 2, 7, 11}, {1, 3, 6, 10}, {1, 4, 10, 11}, {1, 5, 6, 7}, {2, 4, 11, 12}, {3, 4, 10, 13}, {3, 5, 6, 9}, {2, 5, 7, 8}, {0, 2, 4, 12}, {0, 2, 5, 8}, {0, 3, 4, 13}, {0, 3, 5, 9}, {1, 2, 4, 11}, {1, 2, 5, 7}, {1, 3, 4, 10}, {1, 3, 5, 6}}; ++- C = splineComplex(V,F,1); ++- associatedPrimes annihilator HH_2 C +++ CannedExample +++ i25 : V = {{1, 0, 0}, {-1, 0, 0}, {0, 1, 0}, {0, -1, 0}, {0, 0, 1}, {0, 0, -1}, {-2, -2, -2}, {-2, 2, -2}, {2, 2, -2}, {2, -2, -2}, {-2, -2, 2}, {-2, 2, 2}, {2, 2, 2}, {2, -2, 2}}; +++ +++ i26 : F = {{0, 1, 2, 3, 4, 5}, {0, 8, 9, 12, 13}, {1, 6, 7, 10, 11}, {2, 7, 8, 11, 12}, {3, 6, 9, 10, 13}, {4, 10, 11, 12, 13}, {5, 6, 7, 8, 9}, {0, 2, 8, 12}, {0, 3, 9, 13}, {0, 4, 12, 13}, {0, 5, 8, 9}, {1, 2, 7, 11}, {1, 3, 6, 10}, {1, 4, 10, 11}, {1, 5, 6, 7}, {2, 4, 11, 12}, {3, 4, 10, 13}, {3, 5, 6, 9}, {2, 5, 7, 8}, {0, 2, 4, 12}, {0, 2, 5, 8}, {0, 3, 4, 13}, {0, 3, 5, 9}, {1, 2, 4, 11}, {1, 2, 5, 7}, {1, 3, 4, 10}, {1, 3, 5, 6}}; +++ +++ i27 : C = splineComplex(V,F,1); +++ +++ i28 : associatedPrimes annihilator HH_2 C +++ +++ o28 = {ideal (t , t , t ), ideal (t , t , t ), ideal (t , t , t ), ideal (t , +++ 3 2 0 3 2 1 3 1 0 2 +++ ----------------------------------------------------------------------- +++ t , t - t ), ideal (t , t , t + t ), ideal (t , t - t , t ), ideal +++ 1 0 3 2 1 0 3 2 1 3 0 +++ ----------------------------------------------------------------------- +++ (t , t + t , t ), ideal (t - t , t , t ), ideal (t + t , t , t ), +++ 2 1 3 0 2 3 1 0 2 3 1 0 +++ ----------------------------------------------------------------------- +++ ideal (t - 2t , t - 2t , t - 2t ), ideal (t - 2t , t - 2t , t + +++ 2 3 1 3 0 3 2 3 1 3 0 +++ ----------------------------------------------------------------------- +++ 2t ), ideal (t - 2t , t + 2t , t - 2t ), ideal (t - 2t , t + 2t , +++ 3 2 3 1 3 0 3 2 3 1 3 +++ ----------------------------------------------------------------------- +++ t + 2t ), ideal (t + 2t , t + 2t , t - 2t ), ideal (t + 2t , t + +++ 0 3 2 3 1 3 0 3 2 3 1 +++ ----------------------------------------------------------------------- +++ 2t , t + 2t ), ideal (t + 2t , t - 2t , t - 2t ), ideal (t + 2t , +++ 3 0 3 2 3 1 3 0 3 2 3 +++ ----------------------------------------------------------------------- +++ t - 2t , t + 2t ), ideal (t , t , t , t )} +++ 1 3 0 3 3 2 1 0 +++ +++ o28 : List ++ Text ++ The above example showcases a fairly complex three dimensional polyhedral complex. ++ It is a three-dimensional analog of the Morgan-Scot partition in the sense that ++--- a/M2/Macaulay2/packages/MultiplicitySequence.m2 +++++ b/M2/Macaulay2/packages/MultiplicitySequence.m2 ++@@ -493,11 +493,27 @@ ++ Text ++ Given a monomial ideal I, this function computes the j-multiplicity of I ++ following the method of Jeffries-Montaño. ++- Example ++- R = QQ[x,y] ++- I = (ideal"xy5,x2y3,x3y2")^4 ++- elapsedTime monjMult I ++- elapsedTime jMult I +++ CannedExample +++ i1 : R = QQ[x,y] +++ +++ o1 = R +++ +++ o1 : PolynomialRing +++ +++ i2 : I = (ideal"xy5,x2y3,x3y2")^4 +++ +++ 4 20 5 18 6 17 6 16 7 15 8 14 7 14 8 13 9 12 10 11 8 12 9 11 10 10 11 9 12 8 +++ o2 = ideal (x y , x y , x y , x y , x y , x y , x y , x y , x y , x y , x y , x y , x y , x y , x y ) +++ +++ o2 : Ideal of R +++ +++ i3 : elapsedTime monjMult I +++ -- 0.0945551 seconds elapsed +++ +++ o3 = 192 +++ +++ i4 : elapsedTime jMult I +++ -- 1.15819 seconds elapsed ++ SeeAlso ++ multiplicitySequence ++ jMult ++--- a/M2/Macaulay2/packages/SpecialFanoFourfolds.m2 +++++ b/M2/Macaulay2/packages/SpecialFanoFourfolds.m2 ++@@ -2591,7 +2591,61 @@ ++ Outputs => {FunctionClosure => {"which takes the ideal of a (general) point ", TEX///$p\in\mathbb{P}^5$///, " and returns the unique rational curve of degree ", TEX///$e$///, ", ", TEX///$(3e-1)$///, "-secant to ", TEX///$S$///, ", and passing through ", TEX///$p$///, " (an error is thrown if such a curve does not exist or is not unique)"}}, ++ EXAMPLE {"-- A general cubic fourfold of discriminant 26"|newline|"X = specialCubicFourfold(\"Farkas-Verra C26\",ZZ/33331);", "describe X", "time f = detectCongruence X;", "p = point ring X -- random point on P^5", "time C = f p -- 5-secant conic to the surface", "assert(codim C == 4 and degree C == 2 and codim(C+(first ideals X)) == 5 and degree(C+(first ideals X)) == 5 and isSubset(C, p))"}, ++ PARA{"The same method can be also applied to ", ofClass SpecialGushelMukaiFourfold, ". In this case it will detect and return a congruence of (2e-1)-secant curves of degree e inside the unique del Pezzo fivefold containing the GM fourfold."}, ++-EXAMPLE{"-- A general GM fourfold of discriminant 20"|newline|"X = specialGushelMukaiFourfold(\"surface of degree 9 and genus 2\",ZZ/33331);", "describe X", "time f = detectCongruence X;", "Y = source map X; -- del Pezzo fivefold containing X", "p = point Y -- random point on Y", "time C = f p -- 3-secant conic to the surface", "S = sub(first ideals X,Y);", "assert(dim C -1 == 1 and degree C == 2 and dim(C+S)-1 == 0 and degree(C+S) == 3 and isSubset(C, p))"}, +++EXAMPLE{PRE(///i7 : -- A general GM fourfold of discriminant 20 +++ X = specialGushelMukaiFourfold("surface of degree 9 and genus 2",ZZ/33331); +++/// | /// +++o7 : SpecialGushelMukaiFourfold (Gushel-Mukai fourfold containing a surface of degree 9 and sectional genus 2) +++/// | /// +++i8 : describe X +++/// | /// +++o8 = Special Gushel-Mukai fourfold of discriminant 20 +++ containing a surface in PP^8 of degree 9 and sectional genus 2 +++ cut out by 19 hypersurfaces of degree 2 +++ and with class in G(1,4) given by 6*s_(3,1)+3*s_(2,2) +++ Type: ordinary +++ (case 17 of Table 1 in arXiv:2002.07026) +++/// | /// +++i9 : time f = detectCongruence X; +++S: surface of degree 9 and sectional genus 2 in PP^8 cut out by 19 hypersurfaces of degree 2 +++phi: quadratic rational map from 5-dimensional subvariety of PP^8 to PP^13 +++Z=phi(del Pezzo fivefold) +++number lines containing in Z and passing through the point phi(p): 7 +++number 1-secant lines to S passing through p: 6 +++number 3-secant conics to S passing through p: 1 +++ -- used 19.3376 seconds +++/// | /// +++i10 : Y = source map X; -- del Pezzo fivefold containing X +++/// | /// +++i11 : p = point Y -- random point on Y +++/// | /// +++o11 = ideal (t + 14118t , t + 3234t , t - 16296t , t - 5674t , t - +++ 7 8 6 8 5 8 4 8 3 +++ ----------------------------------------------------------------------- +++ 12127t , t - 1329t , t + 3304t , t + 779t ) +++ 8 2 8 1 8 0 8 +++/// | /// +++o11 : Ideal of Y +++/// | /// +++i12 : time C = f p -- 3-secant conic to the surface +++ -- used 0.347885 seconds +++/// | /// +++o12 = ideal (t - 1000t + 8254t - 12393t , t + 10116t + 7449t - 15895t , +++ 5 6 7 8 4 6 7 8 +++ ----------------------------------------------------------------------- +++ t + 10858t + 13401t + 13664t , t - 11215t + 13587t - 5150t , t - +++ 3 6 7 8 2 6 7 8 1 +++ ----------------------------------------------------------------------- +++ 1898t + 4900t + 14451t , t - 7830t + 1802t - 14129t ) +++ 6 7 8 0 6 7 8 +++/// | /// +++o12 : Ideal of Y +++/// | /// +++i13 : S = sub(first ideals X,Y); +++/// | /// +++o13 : Ideal of Y +++/// | /// +++i14 : assert(dim C -1 == 1 and degree C == 2 and dim(C+S)-1 == 0 and degree(C+S) == 3 and isSubset(C, p)) +++///)}, ++ SeeAlso => {coneOfLines}} ++ ++ document {Key => {SpecialCubicFourfold}, ++--- a/M2/Macaulay2/packages/ThreadedGB.m2 +++++ b/M2/Macaulay2/packages/ThreadedGB.m2 ++@@ -349,10 +349,46 @@ ++ The interesting part of the output may be the actual lineages of the basis polynomials, ++ in addition to the Groebner basis itself. ++ Here is a verbose example when the Groebner basis is trivial. ++- Example ++- QQ[a..d] ++- I=ideal( -c^3+a^2+b*d, a*b*c-1,a*b*c) ++- T = tgb(I,2,Verbose=>true) +++ CannedExample +++ i10 : QQ[a..d] +++ +++ o10 = QQ[a, b, c, d] +++ +++ o10 : PolynomialRing +++ +++ i11 : I=ideal( -c^3+a^2+b*d, a*b*c-1,a*b*c) +++ +++ 3 2 +++ o11 = ideal (- c + a + b*d, a*b*c - 1, a*b*c) +++ +++ o11 : Ideal of QQ[a, b, c, d] +++ +++ i12 : T = tgb(I,2,Verbose=>true) +++ You turned on Verbose! You will be notified of each new S-polynomial task created and each new GB element added to the HashTable as we go. +++ Scheduling a task for lineage (0-1) +++ Scheduling a task for lineage (0-2) +++ Scheduling a task for lineage (1-2) +++ Scheduling task for lineage ((0-1)-0) +++ Scheduling task for lineage ((0-1)-1) +++ Scheduling task for lineage ((0-1)-2) +++ Adding the following remainder to GB: -1 from lineage (1-2) +++ Adding the following remainder to GB: -a^3*b-a*b^2*d+c^2 from lineage (0-1) +++ Scheduling task for lineage ((0-2)-0) +++ Scheduling task for lineage ((0-2)-1) +++ Scheduling task for lineage ((0-2)-2) +++ Scheduling task for lineage ((0-2)-(1-2)) +++ Scheduling task for lineage ((0-2)-(0-1)) +++ Adding the following remainder to GB: -a^3*b-a*b^2*d from lineage (0-2) +++ Found 1 or -1 in the Groebner basis; reducing now. +++ +++ o12 = HashTable{(0-1) => null} +++ (0-2) => null +++ (1-2) => 1 +++ 0 => null +++ 1 => null +++ 2 => null +++ +++ o12 : HashTable ++ Text ++ In particular, the lineages of null values tell us what S-polynomials didn't reduce to zero until $1$ was found as ++ a remainder. ++--- a/M2/Macaulay2/packages/Topcom.m2 +++++ b/M2/Macaulay2/packages/Topcom.m2 ++@@ -350,11 +350,27 @@ ++ triangulation. Notice that {\tt tri} is a triangulation of the ++ polytope which is the convex hull of the columns of $A$, which are ++ the only points allowed in the triangulation. ++- Example ++- A = transpose matrix {{0,3},{0,1},{-1,-1},{1,-1},{-4,-2},{4,-2}} ++- tri = {{0,1,2}, {1,3,5}, {2,3,4}, {0,1,5}, ++- {0,2,4}, {3,4,5}, {1,2,3}} ++- isRegularTriangulation(A,tri) +++ CannedExample +++ i1 : A = transpose matrix {{0,3},{0,1},{-1,-1},{1,-1},{-4,-2},{4,-2}} +++ +++ o1 = | 0 0 -1 1 -4 4 | +++ | 3 1 -1 -1 -2 -2 | +++ +++ 2 6 +++ o1 : Matrix ZZ <--- ZZ +++ +++ i2 : tri = {{0,1,2}, {1,3,5}, {2,3,4}, {0,1,5}, +++ {0,2,4}, {3,4,5}, {1,2,3}} +++ +++ o2 = {{0, 1, 2}, {1, 3, 5}, {2, 3, 4}, {0, 1, 5}, {0, 2, 4}, {3, 4, 5}, {1, +++ ------------------------------------------------------------------------ +++ 2, 3}} +++ +++ o2 : List +++ +++ i3 : isRegularTriangulation(A,tri) +++ +++ o3 = false ++ Text ++ Setting debugLevel to either 1,2, or 5 will give more detail about ++ what files are written to Topcom, and what the executable is. ++--- a/M2/Macaulay2/packages/TateOnProducts.m2 +++++ b/M2/Macaulay2/packages/TateOnProducts.m2 ++@@ -5947,22 +5947,44 @@ ++ huge rank and presentation matrices. In particular, the method directImageComplex becomes slow down. ++ ++ The following is an example of direct images of the structure sheaf on a twisted cubic. ++- Example ++- kk=ZZ/101; d=6; ++- needsPackage "Resultants"; ++- vd=veronese(1,d,kk); ++- R=target vd; S=source vd; ++- ++- M=R^{1:-1}; I=ann M; J=ker vd; ++- ++- RM=time directImageComplex(I,M,matrix vd); ++- ++- for i from min RM to max RM list (rank RM_i) +++ CannedExample +++ i1 : kk=ZZ/101; d=6; +++ +++ i3 : needsPackage "Resultants"; +++ +++ i4 : vd=veronese(1,d,kk); +++ +++ o4 : RingMap kk[t ..t ] <--- kk[x ..x ] +++ 0 1 0 6 +++ +++ i5 : R=target vd; S=source vd; +++ +++ i7 : M=R^{1:-1}; I=ann M; J=ker vd; +++ +++ o8 : Ideal of R +++ +++ o9 : Ideal of S +++ +++ i10 : RM=time directImageComplex(I,M,matrix vd); +++ -- used 46.0364 seconds +++ +++ i11 : for i from min RM to max RM list (rank RM_i) +++ +++ o11 = {36, 180, 360, 360, 180, 36} +++ +++ o11 : List ++ Text ++ RM looks complicated since it is consisted of universal bundles on P^6, which are of high rank. ++- Example ++- retTable=time actionOnDirectImage(I,M,matrix vd); ++- keys retTable +++ CannedExample +++ i12 : retTable=time actionOnDirectImage(I,M,matrix vd); +++ We take a finite projection from P^n to P^d as {x , x } -- used 47.1632 seconds +++ 0,0 0,6 +++ +++ i13 : keys retTable +++ +++ o13 = {0} +++ +++ o13 : List ++ Text ++ We see that 0 is the only key, in other words, there is no other R^i vd_{*} except i=0. ++ To see whether it gives an action on S/J, we can use the test function isAction. ++@@ -5970,95 +5992,292 @@ ++ Note that list retTable#i is consisted of maps of chain complexes R^i(\pi \cdot phi)_{*}(y_j) : C\to C(1) where ++ C represents the direct image R^i(\pi \cdot phi)_{*}F. In general, it does not give a right action on C itself. ++ The induced maps on cohomology groups provide a right action. ++- Example ++- isAction(J, apply(dim S, i->prune HH^0 retTable#0#i)) +++ CannedExample +++ i14 : isAction(J, apply(dim S, i->prune HH^0 retTable#0#i)) +++ +++ o14 = true ++ Text ++ The following is a little more complicated example with nontrivial higher direct images. ++ Let X be the product of two quartic curves C, and f : X \to C be the second projection. ++ Let P, Q be two distinct points of C, and let L = O(P\times C + Q\times C + D) be a line bundle ++ on X where D is the diagonal. We want to compute the higher direct images R^i f_{*}L. ++ We choose C as the Fermat quartic, and choose P, Q as points on the intersection of C and the line V(x_2). ++- Example ++- kk=ZZ/1009; ++- (S,E)=productOfProjectiveSpaces({2,2},CoefficientField=>kk); ++- f1=S_0^4+S_1^4+S_2^4; f2=S_3^4+S_4^4+S_5^4; ++- IX=ideal (f1,f2); ++- -- 2 points on C. Note that the line passing through P and Q is V(x_2). ++- P=matrix{{1,192,0}}; Q=matrix{{192,1,0}}; ++- varX=matrix{{S_0,S_1,S_2}}; varY=matrix{{S_3,S_4,S_5}}; ++- PX=P||varX; QX=Q||varX; ++- ++- I1=ideal(f2, minors(2,PX)); -- ideal for P*C ++- I2=ideal(f2, minors(2,QX)); -- ideal for Q*C ++- I3=ideal(f1,f2, minors(2, varX||varY)); -- ideal for the diagonal D ++- I=intersect(I1,I2,I3); -- ideal for P*C+Q*C+D ++- SX=S/IX; Ldual=I/IX; ++- ++- betti (LX=Hom(Ldual, SX^1)) +++ CannedExample +++ i15 : kk=ZZ/1009; +++ +++ i16 : (S,E)=productOfProjectiveSpaces({2,2},CoefficientField=>kk); +++ +++ i17 : f1=S_0^4+S_1^4+S_2^4; f2=S_3^4+S_4^4+S_5^4; +++ +++ i19 : IX=ideal (f1,f2); +++ +++ o19 : Ideal of S +++ +++ i20 : P=matrix{{1,192,0}}; Q=matrix{{192,1,0}}; +++ +++ 1 3 +++ o20 : Matrix ZZ <--- ZZ +++ +++ 1 3 +++ o21 : Matrix ZZ <--- ZZ +++ +++ i22 : varX=matrix{{S_0,S_1,S_2}}; varY=matrix{{S_3,S_4,S_5}}; +++ +++ 1 3 +++ o22 : Matrix S <--- S +++ +++ 1 3 +++ o23 : Matrix S <--- S +++ +++ i24 : PX=P||varX; QX=Q||varX; +++ +++ 2 3 +++ o24 : Matrix S <--- S +++ +++ 2 3 +++ o25 : Matrix S <--- S +++ +++ i26 : I1=ideal(f2, minors(2,PX)); -- ideal for P*C +++ +++ o26 : Ideal of S +++ +++ i27 : I2=ideal(f2, minors(2,QX)); -- ideal for Q*C +++ +++ o27 : Ideal of S +++ +++ i28 : I3=ideal(f1,f2, minors(2, varX||varY)); -- ideal for the diagonal D +++ +++ o28 : Ideal of S +++ +++ i29 : I=intersect(I1,I2,I3); -- ideal for P*C+Q*C+D +++ +++ o29 : Ideal of S +++ +++ i30 : SX=S/IX; Ldual=I/IX; +++ +++ i32 : betti (LX=Hom(Ldual, SX^1)) +++ +++ 0 1 +++ o32 = total: 10 26 +++ 0: 1 . +++ 1: 1 1 +++ 2: . 1 +++ 3: 8 24 +++ +++ o32 : BettiTally ++ Text ++ To compute its Tate resolution on the ambient space P^2 \times P^2, we first consider it as a sheaf on P^2 \times P^2, ++ and then take a linear presentation matrix via a truncation. ++- Example ++- phi = map(SX,S,vars SX); ++- betti (L=prune pushForward(phi,LX)) ++- Ltr = (truncate ({2,2},L))**S^{{2,2}}; ++- betti res Ltr +++ CannedExample +++ i33 : phi = map(SX,S,vars SX); +++ +++ o33 : RingMap SX <--- S +++ +++ i34 : betti (L=prune pushForward(phi,LX)) +++ +++ 0 1 +++ o34 = total: 10 27 +++ 0: 1 . +++ 1: 1 1 +++ 2: . 1 +++ 3: 8 25 +++ +++ o34 : BettiTally +++ +++ i35 : Ltr = (truncate ({2,2},L))**S^{{2,2}}; +++ +++ i36 : betti res Ltr +++ +++ 0 1 2 3 4 +++ o36 = total: 60 176 184 80 12 +++ 0: 60 176 184 80 12 +++ +++ o36 : BettiTally ++ Text ++ We read off (a finite subquotient of) the Tate resolution of Rf_{*}L as follows. ++- Example ++- Q=symExt(presentation Ltr, E); ++- T=(res (coker Q,LengthLimit=>12))**E^{{2,2}}[4]; ++- cohomologyMatrix (T, -{5,5},{3,3}) ++- sT=strand(T,{0,0},{0}); ++- ++- sTFull=new ChainComplex; ++- sTFull.ring = ring sT; ++- ma=6; ++- sTFull=(dual res (coker transpose (sT[ma]).dd_0, LengthLimit=>2*ma))[-ma]; ++- (S',E')=productOfProjectiveSpaces({2},CoefficientField=>kk); ++- projOnE=map(E', E, toList(3:0)|(gens E')); ++- mi=min sTFull; ma=max sTFull; ++- W=new ChainComplex; W.ring = E'; ++- apply(toList(mi..ma),i-> W_i = E'^(-apply(degrees sTFull_i,d->d_{1}))); ++- apply(toList(mi+1..ma),i->W.dd_i = map(W_(i-1),W_i,projOnE sTFull.dd_i)); ++- betti W +++ CannedExample +++ i37 : Q=symExt(presentation Ltr, E); +++ +++ 184 60 +++ o37 : Matrix E <--- E +++ +++ i38 : T=(res (coker Q,LengthLimit=>12))**E^{{2,2}}[4]; +++ +++ i39 : cohomologyMatrix (T, -{5,5},{3,3}) +++ +++ o39 = | 0 0 0 0 0 0 0 96k 0 | +++ | 0 0 0 0 0 0 0 60k 88k | +++ | 60h 48h 36h 24h 12h 3h+3 12 0 0 | +++ | 36h2+20h 28h2+16h 20h2+12h 12h2+8h 4h2+4h 5h+1 12h+4 0 0 | +++ | 92h2 72h2 52h2 32h2 12h2 8h 28h 0 0 | +++ | 168h2 132h2 96h2 60h2 24h2 12h 48h 0 0 | +++ | 244h2 192h2 140h2 88h2 36h2 16h 68h 0 0 | +++ | 320h2 252h2 184h2 116h2 48h2 20h 88h 0 0 | +++ | 396h2 312h2 228h2 144h2 60h2 24h 108h 0 0 | +++ +++ 9 9 +++ o39 : Matrix (ZZ[h, k]) <--- (ZZ[h, k]) +++ +++ i40 : sT=strand(T,{0,0},{0}); +++ +++ i41 : sTFull=new ChainComplex; +++ +++ i42 : sTFull.ring = ring sT; +++ +++ i43 : ma=6; +++ +++ i44 : sTFull=(dual res (coker transpose (sT[ma]).dd_0, LengthLimit=>2*ma))[-ma]; +++ +++ i45 : (S',E')=productOfProjectiveSpaces({2},CoefficientField=>kk); +++ +++ i46 : projOnE=map(E', E, toList(3:0)|(gens E')); +++ +++ o46 : RingMap E' <--- E +++ +++ i47 : mi=min sTFull; ma=max sTFull; +++ +++ i49 : W=new ChainComplex; W.ring = E'; +++ +++ i51 : apply(toList(mi..ma),i-> W_i = E'^(-apply(degrees sTFull_i,d->d_{1}))); +++ +++ i52 : apply(toList(mi+1..ma),i->W.dd_i = map(W_(i-1),W_i,projOnE sTFull.dd_i)); +++ +++ i53 : betti W +++ +++ -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 +++ o53 = total: 24 20 16 12 9 8 9 12 16 20 24 28 32 +++ 0: 22 18 14 10 6 3 1 . . . . . . +++ 1: 2 2 2 2 3 5 8 12 16 20 24 28 32 +++ +++ o53 : BettiTally ++ Text ++ One can check that W has two strands (corresponding to R^0f_{*}L and R^1f_{*}L, respectively). ++ By taking the Beilinson functor, one can check that R^0f_{*}L is the structure sheaf on C, ++ and R^1f_{*}L is a torsion sheaf supported on two points lying on the intersection of C and ++ the line V(x_2) other than P, Q. ++- Example ++- R0fL = prune HH^0 beilinson W ++- R1fL = prune HH^1 beilinson W ++- ++- degree R0fL ++- primaryDecomposition ann R0fL ++- ++- degree R1fL ++- primaryDecomposition ann R1fL +++ CannedExample +++ i54 : R0fL = prune HH^0 beilinson W +++ +++ o54 = cokernel | x_(0,0)^4+x_(0,1)^4+x_(0,2)^4 | +++ +++ 1 +++ o54 : S'-module, quotient of S' +++ +++ i55 : R1fL = prune HH^1 beilinson W +++ +++ o55 = cokernel | -131x_(0,2) 0 0 0 x_(0,0) x_(0,1) 0 0 -131x_(0,2) 0 -131x_(0,2) 0 | +++ | x_(0,2) x_(0,1) x_(0,0) 0 0 0 0 0 0 0 0 0 | +++ | 0 0 0 x_(0,2) -x_(0,1) x_(0,0)+439x_(0,1) 0 0 0 0 0 0 | +++ | 0 0 0 0 0 0 x_(0,2) x_(0,1) x_(0,0) 0 0 0 | +++ | 0 0 0 0 0 0 0 0 0 x_(0,2) x_(0,1) x_(0,0) | +++ +++ 5 +++ o55 : S'-module, quotient of S' +++ +++ i56 : degree R0fL +++ +++ o56 = 4 +++ +++ i57 : primaryDecomposition ann R0fL +++ +++ 4 4 4 +++ o57 = {ideal(x + x + x )} +++ 0,0 0,1 0,2 +++ +++ o57 : List +++ +++ i58 : degree R1fL +++ +++ o58 = 2 +++ +++ i59 : primaryDecomposition ann R1fL +++ +++ 2 +++ o59 = {ideal (x , x + 247x ), ideal (x , x + 192x ), ideal (x , x , x )} +++ 0,2 0,0 0,1 0,2 0,0 0,1 0,1 0,0 0,2 +++ +++ o59 : List ++ Text ++ These module also can be seen as in the following way via a finite linear projection. ++ We take a further projection \pi:C\to P^1, and check whether these modules induce an action ++ on the direct image under \pi, in other words, provide {O_C}-module structures. As results, ++ these actions make (the sheafification of) M0 and M1 into {O_C}-modules which are identical to ++ R^0f_{*}L and R^1f_{*}L. ++- Example ++- J=ideal (S'_0^4+S'_1^4+S'_2^4); ++- retTable=actionOnDirectImage(J,W); ++- keys retTable +++ CannedExample +++ i60 : J=ideal (S'_0^4+S'_1^4+S'_2^4); +++ +++ o60 : Ideal of S' +++ +++ i61 : retTable=actionOnDirectImage(J,W); +++ We take a finite projection from P^n to P^d as {x , x } +++ 0,1 0,2 +++ i62 : keys retTable +++ +++ o62 = {0, 1} +++ +++ o62 : List ++ Text ++ We see that 0, 1 appear as keys, in other words, both R^0f_{*}L and R^1f_{*}L survives. ++- Example ++- prunedActionList = i->apply(dim S',j->prune HH^i retTable#i#j); ++- apply(keys retTable, i->isAction(J,prunedActionList(i))) ++- ++- M0=source (prunedActionList(0))_0 ++- (rank M0, degree M0, betti res M0) ++- isIsomorphic(truncate(regularity M0, M0), truncate(regularity M0, dual dual M0)) ++- dual dual M0 +++ CannedExample +++ i63 : prunedActionList = i->apply(dim S',j->prune HH^i retTable#i#j); +++ +++ i64 : apply(keys retTable, i->isAction(J,prunedActionList(i))) +++ +++ o64 = {true, true} +++ +++ o64 : List +++ +++ i65 : M0=source (prunedActionList(0))_0 +++ +++ o65 = cokernel {2} | 0 -x_(0,1) 0 | +++ {2} | x_(0,0) 0 0 | +++ {2} | -x_(0,1) x_(0,0) 0 | +++ {2} | 0 0 0 | +++ {2} | 0 0 x_(0,0) | +++ {2} | 0 0 -x_(0,1) | +++ {3} | 0 0 0 | +++ 7 +++ o65 : kk[x ..x ]-module, quotient of (kk[x ..x ]) +++ 0,0 0,1 0,0 0,1 +++ +++ i66 : (rank M0, degree M0, betti res M0) +++ +++ 0 1 +++ o66 = (4, 4, total: 7 3) +++ 2: 6 3 +++ 3: 1 . +++ +++ o66 : Sequence +++ +++ i67 : isIsomorphic(truncate(regularity M0, M0), truncate(regularity M0, dual dual M0)) +++ +++ o67 = true +++ +++ i68 : dual dual M0 +++ +++ 4 +++ o68 = (kk[x ..x ]) +++ 0,0 0,1 +++ +++ o68 : kk[x ..x ]-module, free, degrees {3, 2, 1, 0} +++ 0,0 0,1 +++ +++ i69 : M1=source (prunedActionList(1))_0 +++ +++ o69 = cokernel {2} | x_(0,1) 0 | +++ {2} | 0 x_(0,1) | +++ +++ 2 +++ o69 : kk[x ..x ]-module, quotient of (kk[x ..x ]) +++ 0,0 0,1 0,0 0,1 +++ +++ i70 : (rank M1, degree M1, betti res M1) +++ +++ 0 1 +++ o70 = (0, 2, total: 2 2) +++ 2: 2 2 ++ ++- M1=source (prunedActionList(1))_0 ++- (rank M1, degree M1, betti res M1) +++ o70 : Sequence ++ Text ++ Note that the sheafification of M0 (=R^0(\pi \cdot f)_{*}L) is a rank 4 vector bundle O \oplus O(-1) \oplus O(-2) \oplus O(-3) on P^1, ++ and the sheafification of M1 (= R^1(\pi \cdot f)_{*} L) is a torsion sheaf on P^1 supported on the double point at [1:0]. ++--- a/M2/Macaulay2/packages/NoetherianOperators.m2 +++++ b/M2/Macaulay2/packages/NoetherianOperators.m2 ++@@ -3158,25 +3158,114 @@ ++ Next, we provide several examples to show the interplay between computing a set of Noetherian operators and then getting the back the original ideal. ++ ++ The first example shows an ideal that can be described with two different sets of Noetherian operators (this example appeared in Example 7.8 of @ HREF("https://arxiv.org/abs/2001.04700", "Primary ideals and their differential equations")@). ++- Example ++- R = QQ[x_1,x_2,x_3,x_4] ++- MM = matrix {{x_3,x_1,x_2},{x_1,x_2,x_4}} ++- P = minors(2,MM) ++- M = ideal{x_1^2,x_2^2,x_3^2,x_4^2} ++- Q = joinIdeals(P,M); ++- L1 = noetherianOperators(Q) -- A set of Noetherian operators ++- Q1 = getIdealFromNoetherianOperators(L1, P); ++- Q == Q1 ++- L2 = noetherianOperators(M) -- Another set of Noetherian operators ++- Q2 = getIdealFromNoetherianOperators(L2, P); ++- Q == Q2 +++ CannedExample +++ i1 : R = QQ[x_1,x_2,x_3,x_4] +++ +++ o1 = R +++ +++ o1 : PolynomialRing +++ +++ i2 : MM = matrix {{x_3,x_1,x_2},{x_1,x_2,x_4}} +++ +++ o2 = | x_3 x_1 x_2 | +++ | x_1 x_2 x_4 | +++ +++ 2 3 +++ o2 : Matrix R <--- R +++ +++ i3 : P = minors(2,MM) +++ +++ 2 2 +++ o3 = ideal (- x + x x , - x x + x x , - x + x x ) +++ 1 2 3 1 2 3 4 2 1 4 +++ +++ o3 : Ideal of R +++ +++ i4 : M = ideal{x_1^2,x_2^2,x_3^2,x_4^2} +++ +++ 2 2 2 2 +++ o4 = ideal (x , x , x , x ) +++ 1 2 3 4 +++ +++ o4 : Ideal of R +++ +++ i5 : Q = joinIdeals(P,M); +++ +++ o5 : Ideal of R +++ +++ i6 : L1 = noetherianOperators(Q) -- A set of Noetherian operators +++ +++ 2 2 3 2 2 3 3 2 2 +++ o6 = {1, dx_2, dx_1, dx_2 , dx_1*dx_2, dx_1 , dx_2 , dx_1*dx_2 , dx_1 dx_2, dx_1 , 72x x dx_1 dx_2 + 180x x dx_1 dx_2 + +++ 1 3 2 3 +++ ---------------------------------------------------------------------------------------------------------------------------- +++ 3 +++ 72x x dx_1*dx_2 } +++ 3 4 +++ +++ o6 : List +++ +++ i7 : Q1 = getIdealFromNoetherianOperators(L1, P); +++ +++ o7 : Ideal of R +++ +++ i8 : Q == Q1 +++ +++ o8 = true +++ +++ i9 : L2 = noetherianOperators(M) -- Another set of Noetherian operators +++ +++ o9 = {1, dx_4, dx_3, dx_2, dx_1, dx_3*dx_4, dx_2*dx_4, dx_1*dx_4, dx_2*dx_3, dx_1*dx_3, dx_1*dx_2, dx_2*dx_3*dx_4, +++ ---------------------------------------------------------------------------------------------------------------------------- +++ dx_1*dx_3*dx_4, dx_1*dx_2*dx_4, dx_1*dx_2*dx_3, dx_1*dx_2*dx_3*dx_4} +++ +++ o9 : List +++ +++ i10 : Q2 = getIdealFromNoetherianOperators(L2, P); +++ +++ o10 : Ideal of R +++ +++ i11 : Q == Q2 +++ +++ o11 = true ++ Text ++ The following example was given as the running example in the Introduction of @ HREF("https://arxiv.org/abs/2001.04700", "Primary ideals and their differential equations")@. ++- Example ++- Q = ideal(3*x_1^2*x_2^2-x_2^3*x_3-x_1^3*x_4-3*x_1*x_2*x_3*x_4+2*x_3^2*x_4^2,3*x_1^3*x_2*x_4-3*x_1*x_2^2*x_3*x_4-3*x_1^2*x_3*x_4^2+3*x_2*x_3^2*x_4^2+2*x_2^3-2*x_3*x_4^2,3*x_2^4*x_3-6*x_1*x_2^2*x_3*x_4+3*x_1^2*x_3*x_4^2+x_2^3-x_3*x_4^2,4*x_1*x_2^3*x_3+x_1^4*x_4-6*x_1^2*x_2*x_3*x_4-3*x_2^2*x_3^2*x_4+4*x_1*x_3^2*x_4^2,x_2^5-x_1*x_2^3*x_4-x_2^2*x_3*x_4^2+x_1*x_3*x_4^3,x_1*x_2^4-x_2^3*x_3*x_4-x_1*x_2*x_3*x_4^2+x_3^2*x_4^3,x_1^4*x_2-x_2^3*x_3^2-2*x_1^3*x_3*x_4+2*x_1*x_2*x_3^2*x_4,x_1^5-4*x_1^3*x_2*x_3+3*x_1*x_2^2*x_3^2+2*x_1^2*x_3^2*x_4-2*x_2*x_3^3*x_4,3*x_1^4*x_3*x_4-6*x_1^2*x_2*x_3^2*x_4+3*x_2^2*x_3^3*x_4+2*x_1^3*x_2+6*x_1*x_2^2*x_3-6*x_1^2*x_3*x_4-2*x_2*x_3^2*x_4,4*x_2^3*x_3^3+4*x_1^3*x_3^2*x_4-12*x_1*x_2*x_3^3*x_4+4*x_3^4*x_4^2-x_1^4+6*x_1^2*x_2*x_3+3*x_2^2*x_3^2-8*x_1*x_3^2*x_4) ++- L = noetherianOperators(Q) ++- Q' = getIdealFromNoetherianOperators(L, P); ++- Q == Q' +++ CannedExample +++ i12 : Q = ideal(3*x_1^2*x_2^2-x_2^3*x_3-x_1^3*x_4-3*x_1*x_2*x_3*x_4+2*x_3^2*x_4^2,3*x_1^3*x_2*x_4-3*x_1*x_2^2*x_3*x_4-3*x_1^2*x_3*x_4^2+3*x_2*x_3^2*x_4^2+2*x_2^3-2*x_3*x_4^2,3*x_2^4*x_3-6*x_1*x_2^2*x_3*x_4+3*x_1^2*x_3*x_4^2+x_2^3-x_3*x_4^2,4*x_1*x_2^3*x_3+x_1^4*x_4-6*x_1^2*x_2*x_3*x_4-3*x_2^2*x_3^2*x_4+4*x_1*x_3^2*x_4^2,x_2^5-x_1*x_2^3*x_4-x_2^2*x_3*x_4^2+x_1*x_3*x_4^3,x_1*x_2^4-x_2^3*x_3*x_4-x_1*x_2*x_3*x_4^2+x_3^2*x_4^3,x_1^4*x_2-x_2^3*x_3^2-2*x_1^3*x_3*x_4+2*x_1*x_2*x_3^2*x_4,x_1^5-4*x_1^3*x_2*x_3+3*x_1*x_2^2*x_3^2+2*x_1^2*x_3^2*x_4-2*x_2*x_3^3*x_4,3*x_1^4*x_3*x_4-6*x_1^2*x_2*x_3^2*x_4+3*x_2^2*x_3^3*x_4+2*x_1^3*x_2+6*x_1*x_2^2*x_3-6*x_1^2*x_3*x_4-2*x_2*x_3^2*x_4,4*x_2^3*x_3^3+4*x_1^3*x_3^2*x_4-12*x_1*x_2*x_3^3*x_4+4*x_3^4*x_4^2-x_1^4+6*x_1^2*x_2*x_3+3*x_2^2*x_3^2-8*x_1*x_3^2*x_4) +++ +++ 2 2 3 3 2 2 3 2 2 2 2 2 3 2 4 2 +++ o12 = ideal (3x x - x x - x x - 3x x x x + 2x x , 3x x x - 3x x x x - 3x x x + 3x x x + 2x - 2x x , 3x x - 6x x x x + +++ 1 2 2 3 1 4 1 2 3 4 3 4 1 2 4 1 2 3 4 1 3 4 2 3 4 2 3 4 2 3 1 2 3 4 +++ --------------------------------------------------------------------------------------------------------------------------- +++ 2 2 3 2 3 4 2 2 2 2 2 5 3 2 2 3 4 3 +++ 3x x x + x - x x , 4x x x + x x - 6x x x x - 3x x x + 4x x x , x - x x x - x x x + x x x , x x - x x x - +++ 1 3 4 2 3 4 1 2 3 1 4 1 2 3 4 2 3 4 1 3 4 2 1 2 4 2 3 4 1 3 4 1 2 2 3 4 +++ --------------------------------------------------------------------------------------------------------------------------- +++ 2 2 3 4 3 2 3 2 5 3 2 2 2 2 3 4 2 2 +++ x x x x + x x , x x - x x - 2x x x + 2x x x x , x - 4x x x + 3x x x + 2x x x - 2x x x , 3x x x - 6x x x x + +++ 1 2 3 4 3 4 1 2 2 3 1 3 4 1 2 3 4 1 1 2 3 1 2 3 1 3 4 2 3 4 1 3 4 1 2 3 4 +++ --------------------------------------------------------------------------------------------------------------------------- +++ 2 3 3 2 2 2 3 3 3 2 3 4 2 4 2 2 2 2 +++ 3x x x + 2x x + 6x x x - 6x x x - 2x x x , 4x x + 4x x x - 12x x x x + 4x x - x + 6x x x + 3x x - 8x x x ) +++ 2 3 4 1 2 1 2 3 1 3 4 2 3 4 2 3 1 3 4 1 2 3 4 3 4 1 1 2 3 2 3 1 3 4 +++ +++ o12 : Ideal of R +++ +++ i13 : L = noetherianOperators(Q) +++ +++ 2 +++ o13 = {1, dx_1, dx_1 - 2x dx_2} +++ 2 +++ +++ o13 : List +++ +++ i14 : Q' = getIdealFromNoetherianOperators(L, P); +++ +++ o14 : Ideal of R +++ +++ i15 : Q == Q' +++ +++ o15 = true ++ Text ++ The next example was given by Palamodov to show that there exists primary ideals that cannot be described by using differential operators with constant coefficients. ++ Example ++--- a/M2/Macaulay2/packages/TestIdeals/compatiblySplitDoc.m2 +++++ b/M2/Macaulay2/packages/TestIdeals/compatiblySplitDoc.m2 ++@@ -42,16 +42,47 @@ ++ Then $uT$ is a Frobenius map on $E$, and the primes $P$ computed by this function are precisely those for which $uT$ restricts to a nonzero Frobenius map of the annihilator of $P$ on $E$. ++ ++ The following is a simple example, which is split with the coordinate axes in $\mathbb{A}^2$. ++- Example ++- R = ZZ/3[s,t]; ++- u = s^2*t^2; ++- compatibleIdeals u +++ CannedExample +++ i1 : R = ZZ/3[s,t]; +++ +++ i2 : u = s^2*t^2; +++ +++ i3 : compatibleIdeals u +++ +++ o3 = {ideal s, ideal (t, s), ideal t} +++ +++ o3 : List ++ Text ++ Here is a more substantial example. ++- Example ++- R = ZZ/2[a,b,c,d,e,f]; ++- u = d*(b*e - d*c)*(d - a*e - b*f + a*c*f); ++- print \ compatibleIdeals u; +++ CannedExample +++ i4 : R = ZZ/2[a,b,c,d,e,f]; +++ +++ i5 : u = d*(b*e - d*c)*(d - a*e - b*f + a*c*f); +++ +++ i6 : print \ compatibleIdeals u; +++ ideal d +++ ideal (e, d) +++ ideal (f, e, d) +++ ideal (f, e, d, b) +++ ideal (f, e, d, b, a) +++ ideal (f, e, d, c, b, a) +++ ideal (f, e, d, c, b) +++ ideal (f, e, d, a*c + b) +++ ideal (d, b, a) +++ ideal (e, d, b, a) +++ ideal (e, d, c, b, a) +++ ideal (d, b, a, c*f + e) +++ ideal (e, d, b) +++ ideal (e, d, c, b) +++ ideal (e, d, a*c + b) +++ ideal (d, b) +++ ideal (d, b, c*f + e) +++ ideal (d, a*c*f + a*e + b*f) +++ ideal (a*e + d, c*d + b*e, a*c + b) +++ ideal (c*f + e, b*f + d, a*e + d, c*d + b*e, a*c + b) +++ ideal(c*d + b*e) +++ ideal (c*f + e, b*f + d, c*d + b*e) +++ ideal(a*c*f + a*e + b*f + d) ++ Text ++ The option {\tt FrobeniusRootStrategy} is passed to internal @TO frobeniusRoot@ calls. ++ /// diff --cc debian/patches/use-debian-applications.patch index 0000000,0000000..046ef99 new file mode 100644 --- /dev/null +++ b/debian/patches/use-debian-applications.patch @@@ -1,0 -1,0 +1,30 @@@ ++Description: Use applications provided by Debian packages. ++ In particular: ++ * gfanInterface - fig2dev ++ * Posets - xdg-open for default pdf viewer ++Author: Doug Torrance ++Forwarded: not-needed ++Last-Update: 2021-01-01 ++ ++--- a/M2/Macaulay2/packages/gfanInterface.m2 +++++ b/M2/Macaulay2/packages/gfanInterface.m2 ++@@ -15,7 +15,7 @@ ++ Keywords => {"Interfaces"}, ++ Configuration => { ++ "path" => "", ++- "fig2devpath" => "", +++ "fig2devpath" => "/usr/bin/", ++ "keepfiles" => true, ++ "verbose" => false, ++ "cachePolyhedralOutput" => true ++--- a/M2/Macaulay2/packages/Posets.m2 +++++ b/M2/Macaulay2/packages/Posets.m2 ++@@ -21,7 +21,7 @@ ++ Headline => "partially ordered sets (posets)", ++ Keywords => {"Combinatorics"}, ++ Configuration => { ++- "DefaultPDFViewer" => "open", -- "open" for Macs and "evince" for Linux +++ "DefaultPDFViewer" => "xdg-open", -- "open" for Macs and "evince" for Linux ++ "DefaultPrecompute" => true, ++ "DefaultSuppressLabels" => true ++ }, diff --cc debian/patches/use-dh-elpa.patch index 0000000,0000000..086b9fe new file mode 100644 --- /dev/null +++ b/debian/patches/use-dh-elpa.patch @@@ -1,0 -1,0 +1,75 @@@ ++Description: Modifications to work with dh_elpa. ++ * Strip down setupEmacs() function. We only set f12 as a global key ++ to start Macaulay2 inside Emacs. This also strips (load "M2-init") ++ from a user's existing .emacs-Macaulay2 file, which would cause ++ errors if they haven't installed elpa-macaulay2. We also warn the ++ user if elpa-macaulay2 isn't installed. ++ * Set the correct installation directory for the Emacs files in the ++ configure script. ++Author: Doug Torrance ++Forwarded: not-needed ++Last-Update: 2021-01-01 ++ ++--- a/M2/Macaulay2/m2/files.m2 +++++ b/M2/Macaulay2/m2/files.m2 ++@@ -385,12 +385,6 @@ ++ /// ++ ++ dotemacsFix0 = /// ++-;; this version will give an error if M2-init.el is not found: ++-(load "M2-init") ++- ++-;; this version will not give an error if M2-init.el is not found: ++-;(load "M2-init" t) ++- ++ ; You may comment out the following line with an initial semicolon if you ++ ; want to use your f12 key for something else. However, this action ++ ; will be undone the next time you run setup() or setupEmacs(). ++@@ -468,10 +462,15 @@ ++ setupEmacs = method() ++ setup = method() ++ mungeEmacs = () -> ( ++- dotemacsFix = concatenate(emacsHeader, apply(emacsfixes, (var,dir,templ) -> fix(var,dir,"",templ)), dotemacsFix0); +++ dotemacsFix = concatenate(emacsHeader, dotemacsFix0); ++ supplantStringFile(dotemacsFix,"~/"|M2emacs,false); ++- mungeFile("~/"|".emacs", ";; Macaulay 2 start", ";; Macaulay 2 end", M2emacsRead ) ++- ) +++ ret := mungeFile("~/"|".emacs", ";; Macaulay 2 start", ";; Macaulay 2 end", M2emacsRead ); +++ if run("dpkg -s elpa-macaulay2 2> /dev/null | " | +++ "grep -q \"^Status:.* installed\"") != 0 then +++ stderr << "--warning: you must run \"apt install elpa-macaulay2\" " +++ << "as root in order to use" << endl +++ << " Macaulay2 with Emacs." << endl; +++ ret) ++ prelim := () -> ( ++ promptUser = true; ++ if prefixDirectory === null then error "can't determine Macaulay 2 prefix (prefixDirectory not set)"; ++--- a/M2/configure.ac +++++ b/M2/configure.ac ++@@ -2034,7 +2034,7 @@ ++ ++ AC_SUBST(packagesdir,$datadir/Macaulay2) ++ AC_SUBST(libm2dir,$libdir/Macaulay2) ++-AC_SUBST(emacsdir,$datadir/emacs/site-lisp/Macaulay2) +++AC_SUBST(emacsdir,$datadir/emacs/site-lisp/elpa/macaulay2-$PACKAGE_VERSION) ++ AC_SUBST(librariesdir,$libm2dir/lib) ++ AC_SUBST(programsdir,$libexecdir/Macaulay2/bin) ++ AC_SUBST(licensesdir,$libexecdir/Macaulay2/program-licenses) ++@@ -2042,7 +2042,7 @@ ++ ++ AC_SUBST(tail_packagesdir,$tail_datadir/Macaulay2) ++ AC_SUBST(tail_libm2dir,$tail_libdir/Macaulay2) ++-AC_SUBST(tail_emacsdir,$tail_datadir/emacs/site-lisp/Macaulay2) +++AC_SUBST(tail_emacsdir,$tail_datadir/emacs/site-lisp/elpa/macaulay2-$PACKAGE_VERSION) ++ AC_SUBST(tail_librariesdir,$tail_libm2dir/lib) ++ AC_SUBST(tail_programsdir,$tail_libexecdir/Macaulay2/bin) ++ AC_SUBST(tail_licensesdir,$tail_libexecdir/Macaulay2/program-licenses) ++@@ -2050,7 +2050,7 @@ ++ ++ AC_SUBST(pre_packagesdir,$pre_datadir/Macaulay2) ++ AC_SUBST(pre_libm2dir,$pre_libdir/Macaulay2) ++-AC_SUBST(pre_emacsdir,$pre_datadir/emacs/site-lisp/Macaulay2) +++AC_SUBST(pre_emacsdir,$pre_datadir/emacs/site-lisp/elpa/macaulay2-$PACKAGE_VERSION) ++ AC_SUBST(pre_librariesdir,$pre_libm2dir/lib) ++ AC_SUBST(pre_programsdir,$pre_libexecdir/Macaulay2/bin) ++ AC_SUBST(pre_licensesdir,$pre_libexecdir/Macaulay2/program-licenses) diff --cc debian/rules index 0000000,0000000..1d94d00 new file mode 100755 --- /dev/null +++ b/debian/rules @@@ -1,0 -1,0 +1,66 @@@ ++#!/usr/bin/make -f ++ ++include /usr/share/dpkg/architecture.mk ++ ++export DEB_BUILD_MAINT_OPTIONS=hardening=+all ++ ++ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS))) ++export VERBOSE=1 ++endif ++ ++# needed for reproducible-config-args.patch ++export CURDIR ++ ++%: ++ dh $@ --sourcedirectory=M2 --with elpa,linktree ++ ++# use exec_prefix instead of prefix in libdir, as that's what's needed ++# to properly substitute paths in Layout#2, ++override_dh_auto_configure: ++ dh_auto_configure -- \ ++ --libdir=\$${exec_prefix}/lib/$(DEB_HOST_MULTIARCH) ++ ++# prevent html-check-links from failing to find KaTeX files before ++# they get added by dh_linktree ++KATEX_DIR := $(CURDIR)/M2/Macaulay2/packages/Style/katex ++KATEX_FILES := $(patsubst %, $(KATEX_DIR)/%, \ ++ katex.min.css katex.min.js contrib/auto-render.min.js \ ++ contrib/copy-tex.min.css contrib/copy-tex.min.js) ++ ++execute_before_dh_auto_build: $(KATEX_FILES) ++ ++$(KATEX_DIR)/%: ++ touch $@ ++ ++# since a "test" target exists, dh_auto_test defaults to using that, but ++# it just prints the values of some variables. we want the "check" target ++# instead to run the test suite ++# related: https://bugs.debian.org/924052 ++override_dh_auto_test-arch: ++ cd M2 && make check ++ ++override_dh_auto_test-indep: ++ cd M2 && make validate-html ++ ++# remove empty directory ++execute_after_dh_install-arch: ++ rm -rf debian/macaulay2/usr/lib/$(DEB_HOST_MULTIARCH)/Macaulay2/lib ++ ++# https://github.com/Macaulay2/M2/issues/1144 ++execute_before_dh_link-indep: ++ jdupes -rl debian/macaulay2-common/usr/share/doc/Macaulay2 ++ ++# example output and package test files must be plain text ++override_dh_compress: ++ dh_compress -Xexample-output -X.m2 ++ ++execute_before_dh_elpa: debian/macaulay2-pkg.el ++ ++debian/macaulay2-pkg.el: debian/macaulay2-pkg.el.in ++ sed -e 's|@VERSION@|$(shell cat M2/VERSION)|g' $< > $@ ++ ++# we use uscan to check for the most recent version, but to create an ++# orig tarball, we also need the contents of the M2-emacs submodule, ++# so use this target instead of uscan directly ++get-orig-source: ++ debian/scripts/m2-get-orig-source.sh diff --cc debian/scripts/copyright-helper.m2 index 0000000,0000000..ba6c3bf new file mode 100644 --- /dev/null +++ b/debian/scripts/copyright-helper.m2 @@@ -1,0 -1,0 +1,31 @@@ ++-- function to help generate d/copyright paragraphs for Macaulay2 packages ++-- manually check each file to ensure the license information is correct ++copyrightHelper = pkgName -> ( ++ pkg := needsPackage pkgName; ++ filename := "M2/Macaulay2/packages/" | pkgName | ++ if (options pkg)#AuxiliaryFiles then "*" else ".m2"; ++ year := if (options pkg)#Date =!= null then ++ (first select(///[\d]{4}///, (options pkg)#Date)) | " " else ""; ++ danOrMike := any(apply((options pkg)#Authors, author -> ++ last first author), name -> match({"Grayson", "Stillman"}, name)); ++ stdio << "Files: " | filename | newline | ++ "Copyright: " | ++ demark(newline | " ", ++ apply(hashTable \ (options pkg)#Authors, author -> ++ year | author#Name | ++ (if author#?Email then " <" | author#Email | ">" else ""))) | ++ newline | "Comment: See Comment at the top of this file." | newline | ++ "License: " | (if danOrMike then "GPL-2+ and " else "") | ++ "public-domain" << endl ++) ++ ++-- function to check that all packages are mentioned in d/copyright ++-- unless only authors are Dan and/or Mike (or Jane Doe for FirstPackage) ++missingPackages = pathToDCopyright -> ( ++ dCopyright := get pathToDCopyright; ++ missing := select(separate(" ", version#"packages"), pkg -> ++ not match(pkg, dCopyright)); ++ select(missing, pkg -> ++ not all(hashTable \ (readPackage pkg)#Authors, author -> ++ match({"Doe", "Grayson", "Stillman"}, author#Name))) ++) diff --cc debian/scripts/m2-get-orig-source.sh index 0000000,0000000..a34b78f new file mode 100755 --- /dev/null +++ b/debian/scripts/m2-get-orig-source.sh @@@ -1,0 -1,0 +1,121 @@@ ++#!/bin/sh ++ ++# generate Macaulay2 orig tarball for creating Debian packages ++# combines contents of M2 and M2-emacs git repositories and removes ++# any files specified by Files-Excluded in debian/copyright ++# ++# also updates git-description.patch and d/changelog with the corresponding ++# git description/version number ++# ++# options: ++# -u, --uscan ++# use uscan to determine newest stable version (default) ++# ++# -d, --dev ++# use 'development' branch ++# ++# -r, --ref ++# use branch or tag specificed by ++ ++set -e ++ ++if [ "x$1" = "x" -o "x$1" = "x-u" -o "x$1" = "x--uscan" ] ++then ++ echo -n "finding newest version using uscan ... " ++ VERSION=$(uscan --report-status | grep newversion | awk '{print $3}') ++ echo $VERSION ++ REF="release-$VERSION" ++elif [ $1 = "-r" -o $1 = "--ref" ] ++then ++ REF=$2 ++elif [ $1 = "-d" -o $1 = "--dev" ] ++then ++ REF="development" ++else ++ echo "error: unknown command line argument" ++ exit 1 ++fi ++echo "making tarball for ref '$REF'" ++ ++git fetch https://github.com/Macaulay2/M2 $REF 2> /dev/null ++ ++echo -n "determining version number ... " ++GIT_VERSION=$(git show FETCH_HEAD:M2/VERSION) ++NEW_COMMITS=$(git rev-list \ ++ $(git rev-list -1 FETCH_HEAD M2/VERSION)..FETCH_HEAD --count) ++GIT_COMMIT=$(git rev-parse FETCH_HEAD) # cut -c 1-7 (or 9) ++ ++if [ -z $VERSION ] ++then ++ VERSION=$GIT_VERSION+git$NEW_COMMITS.$(echo $GIT_COMMIT | cut -c 1-7) ++fi ++echo $VERSION ++ ++GIT_DESCRIPTION=version-$GIT_VERSION-$NEW_COMMITS-$(echo $GIT_COMMIT | \ ++ cut -c 1-9) ++echo "using git description ... $GIT_DESCRIPTION" ++ ++echo -n "updating debian/patches/git-description.patch ... " ++quilt push debian/patches/git-description.patch > /dev/null ++sed -i "s/^then GIT_DESCRIPTION=.*/then GIT_DESCRIPTION=$GIT_DESCRIPTION/" \ ++ M2/configure.ac ++quilt refresh > /dev/null ++quilt pop -a > /dev/null ++echo "done" ++ ++echo -n "updating debian/changelog ... " ++dch -m -b -v $VERSION+ds-1 "" 2> /dev/null ++echo "done" ++ ++echo -n "generating M2 tarball ... " ++git archive -o ../macaulay2_$VERSION.orig.tar FETCH_HEAD ++echo "done" ++ ++M2_EMACS_PATH=M2/Macaulay2/editors/emacs ++echo -n "finding M2-emacs commit ... " ++M2_EMACS_COMMIT=$(git ls-tree FETCH_HEAD -- $M2_EMACS_PATH | awk '{print $3}') ++echo $M2_EMACS_COMMIT ++ ++echo -n "generating M2-emacs tarball ... " ++git submodule update --quiet --init $M2_EMACS_PATH ++cd $M2_EMACS_PATH ++git archive -o "../../../../../M2-emacs.tar" --prefix $M2_EMACS_PATH/ \ ++ $M2_EMACS_COMMIT ++cd ../../../.. ++git submodule deinit --quiet $M2_EMACS_PATH ++echo "done" ++ ++echo -n "merging tarballs ... " ++tar --concatenate --file ../macaulay2_$VERSION.orig.tar ../M2-emacs.tar ++rm ../M2-emacs.tar ++echo "done" ++ ++echo -n "removing Files-Excluded from debian/copyright ... " ++FILES_EXCLUDED=$(awk '/^Files-Excluded:/ {print $2; flag = 1; next} \ ++ /^\S/ {flag = 0} flag {print $1}' debian/copyright) ++for FILE in $FILES_EXCLUDED ++do ++ if tar -tf ../macaulay2_$VERSION.orig.tar | grep $FILE > /dev/null ++ then ++ tar --delete --wildcards --file ../macaulay2_$VERSION.orig.tar $FILE ++ else ++ MISSING_FILES="$MISSING_FILES $FILE" ++ fi ++done ++mv ../macaulay2_$VERSION.orig.tar ../macaulay2_$VERSION+ds.orig.tar ++echo "done" ++ ++if [ ! -z "$MISSING_FILES" ] ++then ++ echo "warning: in Files-Excluded but not tarball:" ++ for FILE in $MISSING_FILES ++ do ++ echo " $FILE" ++ done ++fi ++ ++echo -n "compressing ... " ++xz -fz ../macaulay2_$VERSION+ds.orig.tar ++echo "done" ++ ++echo "orig tarball: ../macaulay2_$VERSION+ds.orig.tar.xz" diff --cc debian/scripts/m2-tarball-warning.sh index 0000000,0000000..8f63e17 new file mode 100755 --- /dev/null +++ b/debian/scripts/m2-tarball-warning.sh @@@ -1,0 -1,0 +1,4 @@@ ++>&2 echo "+-----------------------------------------------------------------+" ++>&2 echo "| Do NOT use this tarball. It is missing files from the M2-emacs |" ++>&2 echo "| submodule. Instead, run 'debian/rules get-orig-source'. |" ++>&2 echo "+-----------------------------------------------------------------+" diff --cc debian/source/format index 0000000,0000000..163aaf8 new file mode 100644 --- /dev/null +++ b/debian/source/format @@@ -1,0 -1,0 +1,1 @@@ ++3.0 (quilt) diff --cc debian/source/include-binaries index 0000000,0000000..dc58491 new file mode 100644 --- /dev/null +++ b/debian/source/include-binaries @@@ -1,0 -1,0 +1,1 @@@ ++M2/Macaulay2/editors/emacs/M2-symbols.el.gz diff --cc debian/source/lintian-overrides index 0000000,0000000..75506ce new file mode 100644 --- /dev/null +++ b/debian/source/lintian-overrides @@@ -1,0 -1,0 +1,14 @@@ ++# Pre-generated example code used by Macaulay2's built-in help system. ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/AdjointIdeal/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Bertini/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/CoincidentRootLoci/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/ConvexInterface/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/DecomposableSparseSystems/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MapleInterface/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MonodromySolver/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/NCAlgebra/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/NumericalSchubertCalculus/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/PHCpack/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Parametrization/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/StatePolytope/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Tropical/examples/ diff --cc debian/source/options index 0000000,0000000..fae5abd new file mode 100644 --- /dev/null +++ b/debian/source/options @@@ -1,0 -1,0 +1,5 @@@ ++extend-diff-ignore = "M2/submodules" ++extend-diff-ignore = "M2/BUILD" ++extend-diff-ignore = "M2/Macaulay2/m2/TAGS.doc" ++extend-diff-ignore = "M2/configure" ++extend-diff-ignore = "M2/include/M2/config.h.in" diff --cc debian/tests/control index 0000000,0000000..3e1c153 new file mode 100644 --- /dev/null +++ b/debian/tests/control @@@ -1,0 -1,0 +1,17 @@@ ++Test-Command: ++ M2 --silent -q -e 'stderr << netList {"BASIC TESTS"} << endl; exit 0' && ++ M2 --silent --check 1 -q --stop -E "exit 0" && ++ M2 --silent -q -e 'stderr << netList {"CORE TESTS"} << endl; exit 0' && ++ M2 --silent --check 2 -q && ++ M2 --silent -q -e 'stderr << netList {"PACKAGE TESTS"} << endl; exit 0' && ++ M2 --silent --check 3 -q ++Depends: 4ti2, ++ cohomcalg, ++ coinor-csdp, ++ gfan, ++ nauty, ++ normaliz, ++ polymake, ++ topcom, ++ @ ++Restrictions: allow-stderr diff --cc debian/upstream/metadata index 0000000,0000000..ba51ba2 new file mode 100644 --- /dev/null +++ b/debian/upstream/metadata @@@ -1,0 -1,0 +1,28 @@@ ++Repository: https://github.com/Macaulay2/M2 ++Bug-Database: https://github.com/Macaulay2/M2/issues ++Funding: ++ - NSF DMS 92-10805 ++ - NSF DMS 92-10807 ++ - NSF DMS 96-22608 ++ - NSF DMS 96-23232 ++ - NSF DMS 99-70085 ++ - NSF DMS 99-70348 ++ - NSF DMS 03-11378 ++ - NSF DMS 03-11806 ++ - NSF DMS 08-10918 ++ - NSF DMS 08-10948 ++ - NSF DMS 10-02171 ++ - NSF DMS 10-02210 ++ - NSF DMS 15-02209 ++ - NSF DMS 15-02294 ++ - NSF DMS 20-01206 ++ - NSF DMS 20-01267 ++ - NSF DMS 20-01367 ++Reference: ++ Author: Grayson, Daniel R. and Stillman, Michael E. ++ Title: Macaulay2, a software system for research in algebraic geometry ++ Type: misc ++ URL: https://faculty.math.illinois.edu/Macaulay2/ ++Webservice: ++ - http://web.macaulay2.com/ ++ - https://www.unimelb-macaulay2.cloud.edu.au/ diff --cc debian/watch index 0000000,0000000..72b63e3 new file mode 100644 --- /dev/null +++ b/debian/watch @@@ -1,0 -1,0 +1,5 @@@ ++version=4 ++opts=dversionmangle=s/@DEB_EXT@//,repacksuffix=+ds \ ++https://github.com/Macaulay2/M2/releases \ ++/Macaulay2/M2/archive/release-@ANY_VERSION@@ARCHIVE_EXT@ debian \ ++debian/scripts/m2-tarball-warning.sh