summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Weber <xmw@gentoo.org>2017-03-29 01:58:32 +0200
committerMichael Weber <xmw@gentoo.org>2017-03-29 02:01:51 +0200
commit134bd877d0614574894e8bef0ab89bcd30da3f23 (patch)
treeb2363f0105650d244dc88178c407ff604fe5000b
parentdev-libs/libxslt: arm64 stable. (diff)
downloadgentoo-134bd877d0614574894e8bef0ab89bcd30da3f23.tar.gz
gentoo-134bd877d0614574894e8bef0ab89bcd30da3f23.tar.bz2
gentoo-134bd877d0614574894e8bef0ab89bcd30da3f23.zip
dev-libs/libxslt: remove old.
Package-Manager: Portage-2.3.5, Repoman-2.3.2 RepoMan-Options: --include-arches="arm arm64 ppc ppc64"
-rw-r--r--dev-libs/libxslt/Manifest1
-rw-r--r--dev-libs/libxslt/files/libxslt-1.1.28-AC_PATH_TOOL.patch46
-rw-r--r--dev-libs/libxslt/files/libxslt-1.1.28-attribute-type-preprocessing.patch29
-rw-r--r--dev-libs/libxslt/files/libxslt-1.1.28-broken-fprintf-parameters.patch52
-rw-r--r--dev-libs/libxslt/files/libxslt-1.1.28-exslt-str-replace.patch42
-rw-r--r--dev-libs/libxslt/files/libxslt-1.1.28-fix-quoting-xlocale.patch47
-rw-r--r--dev-libs/libxslt/files/libxslt-1.1.28-seed-pseudo-random-generator.patch60
-rw-r--r--dev-libs/libxslt/libxslt-1.1.28-r5.ebuild144
8 files changed, 0 insertions, 421 deletions
diff --git a/dev-libs/libxslt/Manifest b/dev-libs/libxslt/Manifest
index 3e393a9386f..16615d334a1 100644
--- a/dev-libs/libxslt/Manifest
+++ b/dev-libs/libxslt/Manifest
@@ -1,2 +1 @@
-DIST libxslt-1.1.28.tar.gz 3435907 SHA256 5fc7151a57b89c03d7b825df5a0fae0a8d5f05674c0e7cf2937ecec4d54a028c SHA512 20b65bdaceaac5bd11d509bf683ce8e344030bc95164639266ae705d41659bcba47b5be1b059d0d67681e6428b0710db675d1749c06aa531bc2212ed3d0511b1 WHIRLPOOL 7f059d7d6b02fc5982c31d3239188ff0a6d211f722635ac3d3cd77bedf54ef9b1a9433ef1c55a9335f353ce618f3dd93a9e1e19c117988358ab31857edff1843
DIST libxslt-1.1.29.tar.gz 3428524 SHA256 b5976e3857837e7617b29f2249ebb5eeac34e249208d31f1fbf7a6ba7a4090ce SHA512 a1ce555a74a9dabe65e8f64bb66e27e77760fd76940d88f2d59f58dd63ca73c8ae59f3fcbd8e76c8f92ff992fb0c09328528c20ea38ccac83e63252106bf5f31 WHIRLPOOL 874dca166a147e3928207b0dea720b92a3657406363536be0cc3c904dcea7bad0af48536a722d1570743908a7e730073a13440f41885b8fbaeba919b1e99521b
diff --git a/dev-libs/libxslt/files/libxslt-1.1.28-AC_PATH_TOOL.patch b/dev-libs/libxslt/files/libxslt-1.1.28-AC_PATH_TOOL.patch
deleted file mode 100644
index bc9ff7fe359..00000000000
--- a/dev-libs/libxslt/files/libxslt-1.1.28-AC_PATH_TOOL.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 1fc82ea63f16efc0d607b39a162e3032d7c2d602 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Wed, 3 Sep 2014 11:21:01 +0200
-Subject: [PATCH] Use AC_PATH_TOOL to find libgcrypt-config and xml2-config
-
-Using AC_PATH_TOOL prefers ${CHOST}-prefixed tools over 'bare' ones,
-therefore improving support for cross-compilation and multilib. This
-is useful for environment where libgcrypt-config and xml2-config
-correspond to the build host environment, while
-${CHOST}-libgcrypt-config and ${CHOST}-xml2-config are installed for
-each supported build targets.
-
-Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=725635
-Fixes: https://bugs.gentoo.org/show_bug.cgi?id=518728
----
- configure.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index a861e90..f1639a8 100644
---- a/configure.in
-+++ b/configure.in
-@@ -393,7 +393,7 @@ case $host in
- CRYPTO_TESTDIR=crypto
- ;;
- *)
-- AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
-+ AC_PATH_TOOL(LIBGCRYPT_CONFIG, libgcrypt-config, no)
- if test "$LIBGCRYPT_CONFIG" != "no" ; then
- LIBGCRYPT_VERSION=`$LIBGCRYPT_CONFIG --version`
- if test VERSION_TO_NUMBER(echo $LIBGCRYPT_VERSION) -lt VERSION_TO_NUMBER(echo "1.1.42")
-@@ -507,9 +507,9 @@ AC_SUBST(LIBXML_REQUIRED_VERSION)
- AC_MSG_CHECKING(for libxml libraries >= $LIBXML_REQUIRED_VERSION)
- if test "x$LIBXML_CONFIG_PREFIX" != "x"
- then
-- XML_CONFIG=${LIBXML_CONFIG_PREFIX}/bin/xml2-config
-+ AC_PATH_TOOL([XML_CONFIG], [xml2-config], [false], [${LIBXML_CONFIG_PREFIX}/bin])
- else
-- XML_CONFIG=xml2-config
-+ AC_PATH_TOOL([XML_CONFIG], [xml2-config], [false])
- fi
-
- dnl
---
-2.1.0
-
diff --git a/dev-libs/libxslt/files/libxslt-1.1.28-attribute-type-preprocessing.patch b/dev-libs/libxslt/files/libxslt-1.1.28-attribute-type-preprocessing.patch
deleted file mode 100644
index fbcd7ea9055..00000000000
--- a/dev-libs/libxslt/files/libxslt-1.1.28-attribute-type-preprocessing.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 7ca19df892ca22d9314e95d59ce2abdeff46b617 Mon Sep 17 00:00:00 2001
-From: Daniel Veillard <veillard@redhat.com>
-Date: Thu, 29 Oct 2015 19:33:23 +0800
-Subject: Fix for type confusion in preprocessing attributes
-
-CVE-2015-7995 http://www.openwall.com/lists/oss-security/2015/10/27/10
-We need to check that the parent node is an element before dereferencing
-its namespace
----
- libxslt/preproc.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/libxslt/preproc.c b/libxslt/preproc.c
-index 0eb80a0..7f69325 100644
---- a/libxslt/preproc.c
-+++ b/libxslt/preproc.c
-@@ -2249,7 +2249,8 @@ xsltStylePreCompute(xsltStylesheetPtr style, xmlNodePtr inst) {
- } else if (IS_XSLT_NAME(inst, "attribute")) {
- xmlNodePtr parent = inst->parent;
-
-- if ((parent == NULL) || (parent->ns == NULL) ||
-+ if ((parent == NULL) ||
-+ (parent->type != XML_ELEMENT_NODE) || (parent->ns == NULL) ||
- ((parent->ns != inst->ns) &&
- (!xmlStrEqual(parent->ns->href, inst->ns->href))) ||
- (!xmlStrEqual(parent->name, BAD_CAST "attribute-set"))) {
---
-cgit v0.11.2
-
diff --git a/dev-libs/libxslt/files/libxslt-1.1.28-broken-fprintf-parameters.patch b/dev-libs/libxslt/files/libxslt-1.1.28-broken-fprintf-parameters.patch
deleted file mode 100644
index de242f930f0..00000000000
--- a/dev-libs/libxslt/files/libxslt-1.1.28-broken-fprintf-parameters.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 90e8b9066d877e040e791bbf206db0e5653e017a Mon Sep 17 00:00:00 2001
-From: Daniel Veillard <veillard@redhat.com>
-Date: Wed, 30 Jan 2013 17:31:37 +0100
-Subject: Fix a couple of places where (f)printf parameters were broken
-
-As reported by Thomas Jarosch <thomas.jarosch@intra2net.com>
----
- python/libxslt.c | 10 +++++-----
- xsltproc/xsltproc.c | 2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/python/libxslt.c b/python/libxslt.c
-index 6a4f1c3..8dd6c78 100644
---- a/python/libxslt.c
-+++ b/python/libxslt.c
-@@ -356,15 +356,15 @@ libxslt_xsltRegisterExtModuleElement(PyObject *self ATTRIBUTE_UNUSED,
- PyObject *pyobj_element_f;
- PyObject *pyobj_precomp_f;
-
--#ifdef DEBUG_EXTENSIONS
-- printf("libxslt_xsltRegisterExtModuleElement called\n",
-- name, ns_uri);
--#endif
--
- if (!PyArg_ParseTuple(args, (char *)"szOO:registerExtModuleElement",
- &name, &ns_uri, &pyobj_precomp_f, &pyobj_element_f))
- return(NULL);
-
-+#ifdef DEBUG_EXTENSIONS
-+ printf("libxslt_xsltRegisterExtModuleElement called: %s %s\n",
-+ name, ns_uri);
-+#endif
-+
- if ((name == NULL) || (pyobj_element_f == NULL) || (pyobj_precomp_f == NULL)) {
- py_retval = libxml_intWrap(-1);
- return(py_retval);
-diff --git a/xsltproc/xsltproc.c b/xsltproc/xsltproc.c
-index 35f37e8..dfd6d31 100644
---- a/xsltproc/xsltproc.c
-+++ b/xsltproc/xsltproc.c
-@@ -319,7 +319,7 @@ static void endTimer(char *format, ...)
- va_start(ap, format);
- vfprintf(stderr,format,ap);
- va_end(ap);
-- fprintf(stderr, " was not timed\n", msec);
-+ fprintf(stderr, " was not timed\n");
- #else
- /* We don't have gettimeofday, time or stdarg.h, what crazy world is
- * this ?!
---
-cgit v0.11.2
-
diff --git a/dev-libs/libxslt/files/libxslt-1.1.28-exslt-str-replace.patch b/dev-libs/libxslt/files/libxslt-1.1.28-exslt-str-replace.patch
deleted file mode 100644
index b0efa6a4c11..00000000000
--- a/dev-libs/libxslt/files/libxslt-1.1.28-exslt-str-replace.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From ae49d7a73b043bccb7631e7d9577bcaa0bbf8528 Mon Sep 17 00:00:00 2001
-From: Nick Wellnhofer <wellnhofer@aevum.de>
-Date: Mon, 1 Jul 2013 21:10:10 +0800
-Subject: EXSLT function str:replace() is broken as-is
-
-the str:replace() function is no longer usable without a transform
-context. I take it from the bug report that it is not supposed to be used
-from plain XPath but only from XSLT according to the EXSLT specification.
-
-However, the previous implementation used to work in XPath and is still
-registered on an xmlXPathContext by the exsltStrXpathCtxtRegister()
-function. When called from plain XPath, it results in a memory error in
-line 526 (exsltStrReturnString()) of strings.c because xsltCreateRVT()
-returns NULL as an error indicator due to a NULL transform context being
-passed in, which was the return value from xsltXPathGetTransformContext() a
-bit further up (and the code doesn't validate that).
-
-Since fixing the function looks impossible, best is to remove it.
----
- libexslt/strings.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/libexslt/strings.c b/libexslt/strings.c
-index 045cc14..c0c7a18 100644
---- a/libexslt/strings.c
-+++ b/libexslt/strings.c
-@@ -838,11 +838,7 @@ exsltStrXpathCtxtRegister (xmlXPathContextPtr ctxt, const xmlChar *prefix)
- && !xmlXPathRegisterFuncNS(ctxt,
- (const xmlChar *) "concat",
- (const xmlChar *) EXSLT_STRINGS_NAMESPACE,
-- exsltStrConcatFunction)
-- && !xmlXPathRegisterFuncNS(ctxt,
-- (const xmlChar *) "replace",
-- (const xmlChar *) EXSLT_STRINGS_NAMESPACE,
-- exsltStrReplaceFunction)) {
-+ exsltStrConcatFunction)) {
- return 0;
- }
- return -1;
---
-cgit v0.11.2
-
diff --git a/dev-libs/libxslt/files/libxslt-1.1.28-fix-quoting-xlocale.patch b/dev-libs/libxslt/files/libxslt-1.1.28-fix-quoting-xlocale.patch
deleted file mode 100644
index 1acdb2ebd23..00000000000
--- a/dev-libs/libxslt/files/libxslt-1.1.28-fix-quoting-xlocale.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 0a1a5f8c67c90637f0ea3fdc9ec35280d54878d8 Mon Sep 17 00:00:00 2001
-From: Nick Wellnhofer <wellnhofer@aevum.de>
-Date: Tue, 30 Jul 2013 13:57:28 +0200
-Subject: Fix quoting of xlocale test program in configure.in
-
-Double square brackets aren't needed anymore, probably due to the
-changes in commit a2cd8a03.
----
- configure.in | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index fc8d5a8..dcbd971 100644
---- a/configure.in
-+++ b/configure.in
-@@ -196,21 +196,21 @@ typedef locale_t xsltLocale;
- #endif
- ]],[[
- xsltLocale locale;
-- const char *src[[2]] = { "\xc3\x84rger", "Zeppelin" };
-- char *dst[[2]];
-+ const char *src[2] = { "\xc3\x84rger", "Zeppelin" };
-+ char *dst[2];
- size_t len, r;
- int i;
-
- locale = newlocale(LC_COLLATE_MASK, "en_US.utf8", NULL);
- if (locale == NULL) exit(1);
- for (i=0; i<2; ++i) {
-- len = strxfrm_l(NULL, src[[i]], 0, locale) + 1;
-- dst[[i]] = malloc(len);
-- if(dst[[i]] == NULL) exit(1);
-- r = strxfrm_l(dst[[i]], src[[i]], len, locale);
-+ len = strxfrm_l(NULL, src[i], 0, locale) + 1;
-+ dst[i] = malloc(len);
-+ if(dst[i] == NULL) exit(1);
-+ r = strxfrm_l(dst[i], src[i], len, locale);
- if(r >= len) exit(1);
- }
-- if (strcmp(dst[[0]], dst[[1]]) >= 0) exit(1);
-+ if (strcmp(dst[0], dst[1]) >= 0) exit(1);
-
- exit(0);
- return(0);
---
-cgit v0.11.2
-
diff --git a/dev-libs/libxslt/files/libxslt-1.1.28-seed-pseudo-random-generator.patch b/dev-libs/libxslt/files/libxslt-1.1.28-seed-pseudo-random-generator.patch
deleted file mode 100644
index 580fb29a350..00000000000
--- a/dev-libs/libxslt/files/libxslt-1.1.28-seed-pseudo-random-generator.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 3fcf11ead6ad226227b0a3ef4cc6565b8d5857ff Mon Sep 17 00:00:00 2001
-From: Nils Werner <wernerns@iis.fraunhofer.de>
-Date: Thu, 24 Jan 2013 19:44:03 +0100
-Subject: Initialize pseudo random number generator with current time or
- optional command line parameter
-
----
- xsltproc/xsltproc.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/xsltproc/xsltproc.c b/xsltproc/xsltproc.c
-index dfd6d31..45adf5d 100644
---- a/xsltproc/xsltproc.c
-+++ b/xsltproc/xsltproc.c
-@@ -514,6 +514,7 @@ static void usage(const char *name) {
- printf("\t--maxdepth val : increase the maximum depth (default %d)\n", xsltMaxDepth);
- printf("\t--maxvars val : increase the maximum variables (default %d)\n", xsltMaxVars);
- printf("\t--maxparserdepth val : increase the maximum parser depth\n");
-+ printf("\t--seed-rand val : initialize pseudo random number generator with specific seed\n");
- #ifdef LIBXML_HTML_ENABLED
- printf("\t--html: the input document is(are) an HTML file(s)\n");
- #endif
-@@ -556,6 +557,7 @@ main(int argc, char **argv)
- return (1);
- }
-
-+ srand(time(NULL));
- xmlInitMemory();
-
- LIBXML_TEST_VERSION
-@@ -750,6 +752,15 @@ main(int argc, char **argv)
- if (value > 0)
- xmlParserMaxDepth = value;
- }
-+ } else if ((!strcmp(argv[i], "-seed-rand")) ||
-+ (!strcmp(argv[i], "--seed-rand"))) {
-+ int value;
-+
-+ i++;
-+ if (sscanf(argv[i], "%d", &value) == 1) {
-+ if (value > 0)
-+ srand(value);
-+ }
- } else if ((!strcmp(argv[i],"-dumpextensions"))||
- (!strcmp(argv[i],"--dumpextensions"))) {
- dumpextensions++;
-@@ -786,6 +797,10 @@ main(int argc, char **argv)
- (!strcmp(argv[i], "--maxparserdepth"))) {
- i++;
- continue;
-+ } else if ((!strcmp(argv[i], "-seed-rand")) ||
-+ (!strcmp(argv[i], "--seed-rand"))) {
-+ i++;
-+ continue;
- } else if ((!strcmp(argv[i], "-o")) ||
- (!strcmp(argv[i], "-output")) ||
- (!strcmp(argv[i], "--output"))) {
---
-cgit v0.11.2
-
diff --git a/dev-libs/libxslt/libxslt-1.1.28-r5.ebuild b/dev-libs/libxslt/libxslt-1.1.28-r5.ebuild
deleted file mode 100644
index 379c9ee418d..00000000000
--- a/dev-libs/libxslt/libxslt-1.1.28-r5.ebuild
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-PYTHON_COMPAT=( python2_7 )
-PYTHON_REQ_USE="xml"
-
-inherit autotools eutils python-r1 toolchain-funcs multilib-minimal
-
-DESCRIPTION="XSLT libraries and tools"
-HOMEPAGE="http://www.xmlsoft.org/"
-SRC_URI="ftp://xmlsoft.org/${PN}/${P}.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~ppc-aix ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
-IUSE="crypt debug examples python static-libs"
-
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-RDEPEND="
- >=dev-libs/libxml2-2.9.1-r5:2[${MULTILIB_USEDEP}]
- crypt? ( >=dev-libs/libgcrypt-1.5.3:0=[${MULTILIB_USEDEP}] )
- python? (
- ${PYTHON_DEPS}
- dev-libs/libxml2:2[python,${PYTHON_USEDEP}] )
- abi_x86_32? (
- !<=app-emulation/emul-linux-x86-baselibs-20131008-r20
- !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
- )
-"
-DEPEND="${RDEPEND}"
-
-MULTILIB_CHOST_TOOLS=(
- /usr/bin/xslt-config
-)
-
-src_prepare() {
- DOCS=( AUTHORS ChangeLog FEATURES NEWS README TODO )
-
- # https://bugzilla.gnome.org/show_bug.cgi?id=684621
- epatch "${FILESDIR}"/${PN}.m4-${PN}-1.1.26.patch
-
- # use AC_PATH_TOOL for libgcrypt-config for sane cross-compile and multilib support
- # https://bugzilla.gnome.org/show_bug.cgi?id=725635
- # same for xml2-config
- # https://bugs.gentoo.org/show_bug.cgi?id=518728
- epatch "${FILESDIR}"/${PN}-1.1.28-AC_PATH_TOOL.patch
-
- # Apply patches from master found in debian
- epatch \
- "${FILESDIR}"/${PN}-1.1.28-broken-fprintf-parameters.patch \
- "${FILESDIR}"/${PN}-1.1.28-exslt-str-replace.patch \
- "${FILESDIR}"/${PN}-1.1.28-fix-quoting-xlocale.patch \
- "${FILESDIR}"/${PN}-1.1.28-seed-pseudo-random-generator.patch
-
- # Fix null pointer dereference, from master
- # https://bugs.gentoo.org/show_bug.cgi?id=558822
- epatch "${FILESDIR}"/${PN}-1.1.28-attribute-type-preprocessing.patch
-
- # Simplify python setup
- epatch "${FILESDIR}"/${PN}-1.1.28-simplify-python.patch
- epatch "${FILESDIR}"/${PN}-1.1.28-disable-static-modules.patch
-
- mv configure.{in,ac} || die
-
- eautoreconf
- # If eautoreconf'd with new autoconf, then epunt_cxx is not necessary
- # and it is propably otherwise too if upstream generated with new
- # autoconf
-# epunt_cxx
- # But Prefix always needs elibtoolize if not eautoreconf'd.
-# elibtoolize
-}
-
-multilib_src_configure() {
- libxslt_configure() {
- ECONF_SOURCE="${S}" econf \
- --with-html-dir="${EPREFIX}"/usr/share/doc/${PF} \
- --with-html-subdir=html \
- $(use_with crypt crypto) \
- $(use_with debug) \
- $(use_with debug mem-debug) \
- $(use_enable static-libs static) \
- "$@"
- }
-
- libxslt_py_configure() {
- mkdir -p "${BUILD_DIR}" || die # ensure python build dirs exist
- run_in_build_dir libxslt_configure --with-python
- }
-
- libxslt_configure --without-python # build python bindings separately
-
- if multilib_is_native_abi && use python; then
- python_foreach_impl libxslt_py_configure
- fi
-}
-
-multilib_src_compile() {
- default
- multilib_is_native_abi && use python && libxslt_foreach_py_emake all
-}
-
-multilib_src_test() {
- default
- multilib_is_native_abi && use python && libxslt_foreach_py_emake test
-}
-
-multilib_src_install() {
- # "default" does not work here - docs are installed by multilib_src_install_all
- emake DESTDIR="${D}" install
-
- if multilib_is_native_abi && use python; then
- libxslt_foreach_py_emake \
- DESTDIR="${D}" \
- docsdir="${EPREFIX}"/usr/share/doc/${PF}/python \
- EXAMPLE_DIR="${EPREFIX}"/usr/share/doc/${PF}/python/examples \
- install
- python_foreach_impl python_optimize
- fi
-}
-
-multilib_src_install_all() {
- einstalldocs
-
- if ! use examples; then
- rm -rf "${ED}"/usr/share/doc/${PF}/examples
- rm -rf "${ED}"/usr/share/doc/${PF}/python/examples
- fi
-
- prune_libtool_files --modules
-}
-
-libxslt_foreach_py_emake() {
- libxslt_py_emake() {
- pushd "${BUILD_DIR}/python" > /dev/null || die
- emake "$@"
- popd > /dev/null
- }
- local native_builddir=${BUILD_DIR}
- python_foreach_impl libxslt_py_emake top_builddir="${native_builddir}" "$@"
-}